어떤 사람들은 Struts를 배우기가 쉽지 않다고 생각할 수도 있습니다. MVC1, MVC2, 패턴을 접해본 적이 없는 사람들에게 혼란을 주는 일부 개념이 있는 것 같습니다. 스트럿츠에 대한 간단한 소개는 물론, 스트럿츠를 체계적으로 공부하기 위해서는 가이드도 필요하지만, 그 안에는 재미있는 내용이 많이 들어있습니다.
이 경우에는 홈페이지, 사용자 로그인, 웹사이트 마법사 페이지가 포함됩니다. Struts에는 심오한 개념이 없습니다. 주로 실제적인 경험과 마음의 이해에 의존합니다.
웹 서버는 tomcat4를 사용합니다. http://jakarta.apache.org 로 이동하여 struts1.1을 다운로드하고 zip 파일을 c:struts에 릴리스한 다음 C:strutswebappsstruts-example.war를 c:tomcat4webapps에 복사하고 시작합니다. tomcat.war 패키지가 struts-example 폴더에 릴리스되고 war 패키지를 삭제한 후 struts-example 폴더의 이름을 test로 변경합니다.
1. WEB-INFweb.xml을 다음으로 변경합니다:
<?xml version="1.0" 인코딩="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD 웹 애플리케이션 2.2//EN" " http://java.sun.com/j2ee/dtds/web-app_2_2.dtd ">
<웹 -앱>
<!—Struts의 컨트롤러입니다. ActionServlet 클래스는 시스템의 명령 전송을 담당하며 struts-config.xml에서 구성 정보를 읽고 서버 백그라운드에서 자동으로 스레드를 시작합니다. 특별한 요구사항(예: 언어 편집 기능 추가 등)이 없다면 프로그래머는 이 부분을 무시하고 그냥 사용해도 됩니다. -->
<서블릿>
<servlet-name>작업</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<초기화 매개변수>
<param-name>구성</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<시작 시 로드>1</시작 시 로드>
</서블릿>
<!--이 시스템의 서블릿은 일반적인 .jspdo 등이 아닌 멋진 접미사를 가진 파일에 매핑될 수 있습니다. 접미사 이름은 어떤 이름으로도 변경할 수 있습니다. 물론 이름은 정상이어야 합니다. ! -->
<서블릿 매핑>
<servlet-name>작업</servlet-name>
<url-pattern>*.cool</url-pattern>
</서블릿 매핑>
<!--이 시스템의 기본 홈 페이지는 index.jsp이며 여러 개가 있을 수 있으며 시스템은 IIS와 유사하게 이를 순서대로 찾습니다-->
<환영 파일 목록>
<welcome-file>index.jsp</welcome-file>
</welcome-파일-목록>
</web-app>
2. testWEB-INF struts-config.xml을 다음으로 변경합니다:
<?xml version="1.0" 인코딩="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts 구성 1.1//EN"
" http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd ">
<struts-config>
<!--FormBean은 본질적으로 JavaBean입니다. 페이지 양식의 각 필드 값을 자동으로 저장하고 적절한 시점에 양식 필드를 채울 필요가 없습니다. 전통적인 방식과 같이 request.getParameter("fieldName")로, 액션 매핑의 액션에서 자주 사용됩니다.
<폼-빈스>
<!—나중에 사용자 정보를 저장하기 위해 UserForm 클래스를 추가할 예정입니다. -->
<form-bean name="userForm" type="test.UserForm"/>
</form-beans>
<!--JavaScript의 window.location('index.jsp')과 유사하고 TV 컨트롤러의 다양한 버튼, 색상과 유사하게 전체 시스템에서 사용할 수 있는 전역 전달 주소를 저장합니다. 조정 등은 Struts 기반의 웹 애플리케이션의 제어 흐름입니다. 일반적인 상황에서는 작업이 처리된 후 표시를 위해 JSP 페이지로 전달됩니다. 이는 JSP에서 MVC를 구현하는 핵심 포인트이기도 합니다. -->
<글로벌 포워드>
<!--failed.cool은 서블릿 요청으로 처리되며 해당 작업 처리는 작업 매핑에서 찾을 수 있습니다. -->
<앞으로 이름="실패" 경로="/failed.cool"/>
<앞으로 이름="regist" path="/regist.jsp"/>
</글로벌 포워드>
<!--web.xml에서 접미사 Cool이 붙은 요청을 기억하시나요? 여기에서 처리됩니다. 이는 스트럿의 모델 부분과 동일합니다. 모델 부분은 스트럿의 보다 유연한 위치입니다. -->
<액션 매핑>
<!--register.cools의 요청을 처리하기 위해 사용되는 FormBean은 test.UserForm 클래스인 userForm입니다. 처리 중 오류가 발생하면 index.jsp가 반환됩니다.-->
<action path="/regist" type="test.RegistAction" name="userForm" range="request" input="/index.jsp" />
<액션 경로="/overview" 앞으로="/hello.jsp"/>
<액션 경로="/failed" 전달="/wuwu.jsp" />
</액션 매핑>
</struts-config>
3. 클래스 경로 test.UserForm을 사용하여 FormBean을 추가합니다. 다음은 이 클래스의 내용입니다
.
import org.apache.struts.action.ActionForm;
공용 클래스 UserForm은 ActionForm을 확장합니다.
{
private String name="lpw";//사용자 이름 private String ps="1111";//Password public UserForm(){}
공개 무효 setName(문자열 s) {name=s;}
공개 문자열 getName() {반환 이름;}
공개 무효 setPs(문자열 s) {ps=s;}
공개 문자열 getPs() {return ps;}
}
4. Action의 하위 클래스를 추가합니다. 클래스 경로는 test입니다. RegistAction은 다음과 같습니다. 이 클래스의 내용은 다음과 같습니다
.
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
org.apache.struts.util.MessageResources 가져오기;
import test.UserForm;
공개 최종 클래스 RegistAction은 Action을 확장합니다.
{
공개 ActionForward 실행(ActionMapping 매핑, ActionForm 양식, HttpServletRequest 요청, HttpServletResponse 응답)
throwsException
{
Locale locale = getLocale(요청);
MessageResources 메시지 = getResources(요청);
HttpSession 세션 = request.getSession();
UserForm userform = (UserForm) 양식;
//여기서 다른 클래스를 호출하여 데이터베이스 작성이나 기타 논리적 판단을 수행할 수 있습니다. //UserForm이 전달한 매개변수 이름의 값이 기본 lpw인 경우 실패로 전달됩니다.
// 이 이름은 struts-config.xml의 <global-forwards>에서 매핑된 URL 주소로 검색됩니다. // (절대 경로 또는 상대 경로일 수 있음) 이 예에서는 failed.cool로 이동합니다.
//기억하다? 접미사 "cool"이 있는 모든 요청은 // 해당 작업 처리를 찾기 위해 action-mappings로 이동합니다. 최종 디렉터리는 wuwu.jsp*/입니다.
if( "lpw".equals(userform.getName()) )
return(mapping.findForward("실패"));
또 다른
return(mapping.findForward("regist"));
}
}
5. 다음의 모든 새 페이지 또는 수정된 페이지는 struts의 보기 부분과 동일합니다. 홈페이지 index.jsp를
<%@ page contentType="text/html;charset=GBK" 언어="java" %>
로 변경합니다.
<%@ 페이지 가져오기 = "test.*" %>
<a href="overview.cool">사이트 탐색</a><br>
<form action="regist.cool" method="post">
<!—양식의 필드 이름은 사용자 양식의 매개 변수와 동일해야 request.getParameter("param")를 사용하지 않고도 데이터를 자동으로 가져올 수 있습니다.-->
사용자:<input type="text" name="name"><br>
비밀번호:<input type="password" name="ps"><br>
<입력 유형=제출 값="사용자 추가">
</form>
6. 사이트 탐색을 위해 hello.jsp를 추가합니다.
<h1>사이트 맵</h1> 다음은 리더가 채우는 콘텐츠입니다
. 7. wuwu.jsp를 추가하면 로그인한 새 사용자가 이 사이트로 리디렉션됩니다. 페이지:
<%@ 페이지 contentType="text/html;charset=GBK" 언어="java" %>
<jsp:useBean id="beanlpw" class="test.UserForm" 범위="세션"/>
기존 사용자: <%=beanlpw.getName()%><br>
비밀번호: <%=beanlpw.getPs()%><br>
새로운 사용자를 얻지 못했습니다!
8. 새로운 사용자가 로그인하면 다음 페이지로 리디렉션됩니다:
<%@ page contentType="text/html;charset=GBK" 언어="java" %>
<jsp:useBean id="beanlpw" class="test.UserForm" 범위="세션"/>
새 사용자 계정: <%=beanlpw.getName()%><br>
Password: <%=beanlpw.getPs()%>
9. tomcat4를 시작하고 브라우저에 http://localhost:8080/test/index.jsp를 입력하고 실행하면 결과를 볼 수 있으며 처음에는 M의 M을 이해합니다. 물론 struts, V, C 부분이 함께 작동하는 것은 작성자의 좋은 의도입니다.