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

  • 相关阅读:
    01_根据Id查询User的数据
    rest_framework常用设置
    django AnonymousUser
    获取视频时长和文件大小
    xadmin增加用户 除了账号和密码 添加其他信息
    Django 重写用户模型
    xadmin 常见错误
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
    xadmin设置
    python3安装xadmin出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2677917.html
Copyright © 2020-2023  润新知