zoukankan      html  css  js  c++  java
  • struts2.0的工作流程

    这是Struts2官方站点提供的Struts 2 的整体结构。

      一个请求在Struts2框架中的处理大概分为以下几个步骤:

      Struts2.0是struts1.0和WebWork2.2合并版本,集成了两大流行MVC框架的优点,对struts框架来说是一个大的提升,同时也更大程度地简化了开发人员的开发过程。
    这个例子实现了一个简单的登陆效果,操作步骤如下:
    1、首先,要从apache网站上下载struts2.0.11的完整包(http://struts.apache.org/downloads.html),解压后需要找到下列几个文件:
    commons-logging-1.0.4.jar
    freemarker-2.3.8.jar
    ognl-2.6.11.jar
    struts2-core-2.0.11.jar
    xwork-2.0.4.jar
    2、然后,我们就开始做第一个例子,新建web项目struts2
    3、将上面列举的jar文件拷贝到项目struts2\WEB-INF\lib中,或添加自己的strust2.0用户库
    4、新建login.jsp

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    3.     pageEncoding="UTF-8"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    5. <html xmlns="http://www.w3.org/1999/xhtml">  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    8. <title>Insert title here</title>  
    9. </head>  
    10. <body>  
    11. <form action="login.action" method="post">  
    12. username:<input type="text" name="username" /><p>  
    13. password:<input type="password" name="password" /><p>  
    14. <input type="submit" name="Submit" value="提交" />  
    15. </form>  
    16. </body>  
    17. </html>  



    struts1与struts2的区别:
    <form action="login.action" method="post">
    struts1通过servlet拦截所有发送过来以do结尾的请求,交有ActionServlet控制,决定由那个Action进行处理

    5、新建result.jsp

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    3.     pageEncoding="UTF-8"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    5. <html xmlns="http://www.w3.org/1999/xhtml">  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    8. <title>Insert title here</title>  
    9. </head>  
    10. <body>  
    11.     username:${requestScope.username}<br>   
    12.     password:${requestScope.password}   
    13. </body>  
    14. </html>  


    6、修改web.xml

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app id="WebApp_ID" 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">  
    3.     <display-name>  
    4.     struts2.0</display-name>  
    5.     <welcome-file-list>  
    6.         <welcome-file>login.jsp</welcome-file>  
    7.     </welcome-file-list>  
    8.     <filter>  
    9.         <filter-name>struts2.0</filter-name>  
    10.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
    11.     </filter>  
    12.     <filter-mapping>  
    13.         <filter-name>struts2.0</filter-name>  
    14.         <url-pattern>/*</url-pattern>  
    15.     </filter-mapping>  
    16. </web-app>  



    struts1与struts2的区别:
    struts1是通过servlet做控制器
    struts2这里采用Filter过滤客户端发过来的请求

    7、创建loginAction.java

    Java代码  收藏代码
    1. package com.action;  
    2. public class loginAction {  
    3.     private String username;  
    4.     private String password;      
    5.     public String getUsername() {  
    6.         return username;  
    7.     }  
    8.     public void setUsername(String username) {  
    9.         this.username = username;  
    10.     }  
    11.     public String getPassword() {  
    12.         return password;  
    13.     }  
    14.     public void setPassword(String password) {  
    15.         this.password = password;  
    16.     }  
    17.       
    18.     public String execute()throws Exception{  
    19.         return "success";         
    20.     }  
    21.       
    22. }  



    struts1与struts2的区别:
    struts1必须继承Action,覆盖execute()
    struts2则不需要

    8、添加struts.xml

    Java代码  收藏代码
    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. <struts>  
    6.     <package name="struts2.0" extends="struts-default">  
    7.         <action name="login" class="com.action.loginAction">  
    8.             <result name="success">/result.jsp</result>  
    9.         </action>  
    10.     </package>  
    11. </struts>  



    struts1与struts2的区别:
    struts1在项目\WEB-INF\struts-config.xml配置文件
    struts2在项目\src\struts.xml配置文件

    9、o了,简单的例子以完成,下面是代码重构:
    使用struts2.0标签,添加校验功能
    1、修改login.jsp,改为使用struts2.0标签
    导入标签<%@ taglib prefix="s" uri="/struts-tags"%>
    把form表单替换为使用struts2.0标签

    Java代码  收藏代码
    1. <s:form action="login">  
    2.     <s:textfield name="username" label="username"></s:textfield>  
    3.     <s:password name="password" label="password"></s:password>  
    4.     <s:submit label="submit"></s:submit>  
    5. </s:form>  


    (使用标签可以自动换行,按钮默认右对齐)
    2、修改loginAction.java
    loginAction继承ActionSupport
    重写Validate()验证方法

    Java代码  收藏代码
    1. @Override  
    2.     public void validate() {  
    3.         if(null==this.getUsername()||"".equals(this.getUsername().trim())){  
    4.             this.addFieldError("username""username error");//添加错误信息  
    5.         }  
    6.         if(null==this.getPassword()||"".equals(this.getPassword().trim())){  
    7.             this.addFieldError("password""password error");//添加错误信息  
    8.         }  
    9.     }  


    3、修改struts.xml,添加出错返回的页面

    Java代码  收藏代码
    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. <struts>  
    6.     <package name="struts2.0" extends="struts-default">  
    7.         <action name="login" class="com.action.loginAction">  
    8.                 <!-- 添加出错返回的页面 -->  
    9.                <result name="input">/login.jsp</result>            <result name="success">/result.jsp</result>  
    10.         </action>  
    11.     </package>  
    12. </struts>  



    struts1与struts2的区别:
    struts1需要在form里添加<html:errors/>标签,来提示错误处理的信息
    struts2则不需要

    匹配用户名为hello,密码为world
    1、修改loginAction.java下的execute()方法

    Java代码  收藏代码
    1. public String execute()throws Exception{  
    2.         if("hello".equals(this.getUsername().trim())&&"world".equals(this.getPassword().trim())){  
    3.             return "success";     
    4.         }  
    5.         else{  
    6.             this.addFieldError("username""username or password error");//定义在username上面提示错误信息  
    7.             return "failer";      
    8.         }  
    9.               
    10.     }  


    2、修改struts.xml,增加failer映射

    Java代码  收藏代码
    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. <struts>  
    6.     <package name="struts2.0" extends="struts-default">  
    7.         <action name="login" class="com.action.loginAction">  
    8.             <result name="input">/login.jsp</result>  
    9.             <result name="success">/result.jsp</result>  
    10.                   <!-- 增加failer映射 -->  
    11.             <result name="failer">/login.jsp</result>  
    12.         </action>  
    13.     </package>  
    14. </struts>  


    3、全部完成,把制作好的web应用struts2拷贝到tomcat下运行

  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2677917.html
Copyright © 2011-2022 走看看