一、Struts2的流程
一、Struts2的流程
1.Struts2简单的开发开发步骤
模拟一个简单的登陆模块说明步骤:
(1)在web.xml中定义核心Filter来拦截用户请求;
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 定义Struts2的核心Filter --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- 让Struts2的核心Filter拦截所有请求 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
(2)如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅是以GET方式发送请求则无需此步;
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 导入Struts2的标签库 --> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>模拟登陆页面</title> </head> <body> <s:form action="login"> <s:textfield name="username" key="user"/> <s:password name="password" key="pass"/> <s:submit key="login"/> </s:form> </body> </html>
(3)定义处理用户请求的Action类;
import com.opensymphony.xwork2.ActionSupport; public class LoginTsest1 extends ActionSupport{ private static final long serialVersionUID = 1L; //定义封装请求的username和password private String username; private String password; //setter、getter方法 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //定义处理用户请求的execute()方法 public String execute() throws Exception{ //模拟登陆 //不进行数据库访问等内容 if(getUsername().equals("123456")&&getPassword().equals("123456")){ return SUCCESS; }else{ return ERROR; } } }
(4)配置Action,并配置处理结果和物理视图资源之间的对应关系;
在src目录下的sturts.xml文件中配置Action
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <!-- 设置OGNL表达式可以访问静态方法 --> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> <package name="test_1" extends="struts-default"> <action name="*"> <result>/WEB-INF/_1/login.jsp</result> </action> <action name="login" class="_1_Action.LoginTest1"> <!-- 定义逻辑视图与物理资源之间的映射 --> <result name="error">/WEB-INF/_1/error/err.jsp</result> <result name="success">/WEB-INF/_1/success/success.jsp</result> </action> </package> </struts>
(5)编写物理视图资源
success.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登陆成功</title> </head> <body> 登陆成功! </body> </html>
err.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登陆失败</title> </head> <body> 登陆失败 </body> </html>
2.Struts2的流程