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下运行

  • 相关阅读:
    Linux如何对文件内容中的关键字进行查找
    Gitlab如何进行备份恢复与迁移?
    Centos7上传文件和下载文件命令
    Linux下如何查看系统启动时间和运行时间
    您应该知道的35个绝对重要的Linux命令
    rabbitMq可靠消息投递之交换机备份
    rabbitMq可靠性投递之配置(消息至交换机,至队列不通的回调)
    springcloud超时重试机制的先后顺序
    mysql 8.0 1405的坑
    linux安装mysql8.0
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2677917.html
Copyright © 2011-2022 走看看