struts2工作流程图

摘要

Struts2是基于MVC设计模式的流行和成熟的Web应用程序框架。Struts2并不只是Struts 1下一个版本,但它是一个完全重写的Struts架构, WebWork框架开始了与Struts1

工作流程

 

1.客户端提交一个HttpServletRequest请求(action或JSP页面)。

 

2.请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等。

 

3.FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器。

 

4.请求被发送到FilterDispatcher后,FilterDispatcher询问ActionMapper时候需要调用某个action来处理这个Request。

 

5.如果ActionMapper决定需要调用某个action,FilterDispatcher则把请求交给ActionProxy进行处理。

 

6.ActionProxy通过Configuration Manager询问框架的配置文件struts.xml,找到调用的action类。

 

7.ActionProxy创建一个ActionInvocation实例,通过代理模式调用Action。

 

8.action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Intercepter拦截器。

 

9.最后ActionInvocation实例,负责根据struts.xml中配置result元素,找到与之相对应的result,决定进一步输出。

 

 

 

基本简要流程:

1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器。 

struts2项目配置流程

1.新建web static project



如果没有tomcat的类库,需要添加。

 

2.将struts2的jar文件复制到WebContent/WEB-INF/lib目录中

 


 

3.配置web.xml文件



 <?xml version="1.0" encoding="UTF-8"?>

Xml代码  收藏代码

  1. <web-app xmlns="http://java.sun.com/xml/ns/javaee"   

  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   

  4.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">  

  5.   

  6.     <display-name>SSH2</display-name>  

  7.   

  8.     <filter>  

  9.         <filter-name>struts2</filter-name>  

  10.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  

  11.     </filter>  

  12.   

  13.     <filter-mapping>  

  14.         <filter-name>struts2</filter-name>  

  15.         <url-pattern>/*</url-pattern>  

  16.     </filter-mapping>  

  17.   

  18.     <welcome-file-list>  

  19.         <welcome-file>index.html</welcome-file>  

  20.         <welcome-file>index.jsp</welcome-file>  

  21.     </welcome-file-list>  

  22. </web-app>  

 

4.新建login.jsp,error.jsp,welcome.jsp文件

 

login.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"

Jsp代码  收藏代码

  1.     pageEncoding="UTF-8"%>  

  2. <%@taglib prefix="s" uri="/struts-tags" %>  

  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

  4. <html>  

  5. <head>  

  6. <title>用户登录</title>  

  7. </head>  

  8. <body>  

  9. <s:form action="login">  

  10.     <s:textfield name="username" key="user"></s:textfield>  

  11.     <s:textfield name="password" key="pwd"></s:textfield>  

  12.     <s:submit key="login"/>  

  13. </s:form>  

  14. </body>  

  15. </html>  

 welcome.jsp


Java代码  收藏代码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  

  2.     pageEncoding="UTF-8"%>  

  3. <%@taglib prefix="s" uri="/struts-tags" %>  

  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

  5. <html>  

  6. <head>  

  7. <title>用户登录</title>  

  8. </head>  

  9. <body>  

  10. 登录成功  

  11. </body>  

  12. </html>  

 error.jsp


Java代码  收藏代码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  

  2.     pageEncoding="UTF-8"%>  

  3. <%@taglib prefix="s" uri="/struts-tags" %>  

  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

  5. <html>  

  6. <head>  

  7. <title>用户登录</title>  

  8. </head>  

  9. <body>  

  10. 登录失败  

  11. </body>  

  12. </html>  

 

 

5.src目录下新建struts.xml、message.properties文件

 

struts.xml


Xml代码  收藏代码

  1. <?xml version="1.0" encoding="UTF-8" ?>  

  2. <!DOCTYPE struts PUBLIC  

  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  

  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  

  5.   

  6. <struts>  

  7.   

  8.     <constant name="struts.enable.DynamicMethodInvocation" value="true" />  

  9.     <constant name="struts.devMode" value="true" />  

  10.       

  11.     <constant name="struts.custom.i18n.resources" value="message" />  

  12.     <constant name="struts.i18n.encoding" value="UTF-8" />  

  13.   

  14.     <!-- Add packages here -->  

  15.     <package name="auth" extends="struts-default">  

  16.         <action name="login" class="com.tim4lover.ssh2.auth.action.LoginAction">  

  17.             <result name="input">/login.jsp</result>  

  18.             <result name="error">/error.jsp</result>  

  19.             <result name="success">/welcome.jsp</result>  

  20.         </action>  

  21.     </package>  

  22. </struts>  

 message.properties


Java代码  收藏代码

  1. loginPage=登录页面  

  2. errorPage=错误页面  

  3. successPage=成功页面  

  4. failTip=对不起,您不能登录!  

  5. successTip=欢迎,{0},您已经登录!  

  6. user=用户名  

  7. pwd=密码  

  8. login=登录  

 

 

message.properties文件的编码格式为utf-8,还必须用native2ascii命令来处理该国际化资源文件。

src目录下新建 toUTF-8.bat,运行。

 

toUTF-8.bat


Java代码  收藏代码

  1. native2ascii -encoding UTF-8 message.properties message_zh_CN.properties  

 

运行,生成message_zh_CN.properties

 

6.新建action类  


Java代码  收藏代码

  1. package com.tim4lover.ssh2.auth.action;  

  2.   

  3. import com.opensymphony.xwork2.ActionContext;  

  4. import com.opensymphony.xwork2.ActionSupport;  

  5.   

  6. public class LoginAction extends ActionSupport {  

  7.     private static final long serialVersionUID = 1L;  

  8.   

  9.     private String username;  

  10.     private String password;  

  11.   

  12.     @Override  

  13.     public String execute() throws Exception {  

  14.         if("admin".equals(username) && "123456".equals(password)) {  

  15.             ActionContext.getContext().getSession().put("user", getUsername());  

  16.             return SUCCESS;  

  17.         }else {  

  18.             return ERROR;  

  19.         }  

  20.     }  

  21.   

  22.     public String getUsername() {  

  23.         return username;  

  24.     }  

  25.   

  26.     public void setUsername(String username) {  

  27.         this.username = username;  

  28.     }  

  29.   

  30.     public String getPassword() {  

  31.         return password;  

  32.     }  

  33.   

  34.     public void setPassword(String password) {  

  35.         this.password = password;  

  36.     }  

  37.       

  38. }  

 

 

7.配置struts.xml,action到jsp的映射。

 


 


IT家园
IT家园

网友最新评论 (0)