Struts2 开发文档

662人浏览 / 0人评论

Struts2

 

第一节

HelloWorld案例

  1. 新建项目
Servlet API 2.4 JSP API 2.0 Java 5
  1. 导入Jar
image001  
  1. 配置xml
添加filter
    struts2
    
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

  
  
    struts2
    /*
  


   
  1. 新建xml文件
Src目录下新建struts.xml


  1. 新建Action
  • 新建class 继承ActionSupport
  • 重写execute方法
添加返回值
  1. 配置xml
    
        
            /result.jsp
        
    

 
  1. 启动Tomcat 访问action
  第二节 Struts2工作原理   Struts2 struts.xml配置
    
    
        
            
             
             
             
             
                
                
             
        
        
        
        
        
        
            /error.jsp
            /error.jsp
            /error.jsp
        
        
        
            
             
             
            /result.jsp
            
             http://www.sina.com
        
    


  Struts.Properties #指定默认编码集 struts.i18n.encoding=UTF-8 #是否每次请求重新加载国际化资源文件, 默认false struts.i18n.reload=false #struts改动后是否重新加载   开发阶段建议开启 struts.configuration.xml.reload = true #是否使用struts2开发模式, 获得更多的报错信息 struts.devMode = false #是否缓存静态内容,  默认是true 。 开发阶段可以关闭 struts.server.static.browserCache=false #Struts2默认是 .action 。  .action不需要配置   action/do都可以 struts.action.extension=action,do,struts2 #配置服务器占用端口 struts.url.http.port = 8080 第三节 Struts2详解
  1. 访问Servlet API
  • ActionContext
  • 实现***Awaer接口
  • ServletActionContext
  1. Action搜索顺序
http://localhost:8080/struts2/path1/path2/path3/hello.action 第一步:判断package是否存在如path1/path2/path3/   存在 第二步:判断action是否存在,如果不存在则去默认的 Namespace的package里面寻找action 第三步:如果没有则报错   不存在 第二步:检查上一级路径的package是否存在(直到默认的namespace),重复第一步 第三步:如果没有,则报错    
  1. 动态方法调用
  • 指定method属性
<action name="helloworld" method="add" class="com.admxj.actions.HelloWorldAction">
  • 感叹号方式
struts.xml添加 <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> 修改请求 /path/hello!add.action
  • 通配符方式
<action name="_" method="{2}" class="com.admxj.actions.{1}Action"> <result name="add">/{2}.jsp</result> </action>    
  1. 指定多个配置文件
<include file="login.xml"></include>
  1. 默认Action
配置错误页面action <default-action-ref name="error"></default-action-ref> <action name="error"> <result>/error.jsp</result> </action>
  1. Struts2 后缀
struts.Xml <constant name="struts.action.extension" value="html"></constant> struts.properties文件 struts.action.extension=action,do,struts2 web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>struts.action.extension</param-name> <param-value>action</param-value> </init-param> </filter>
  1. 接收参数
  • 使用Action属性接收参数、
在action里面新建属性和setters和getters方法
  • 使用Domain Model接收参数
  1. 新建实体类User生成getters和setters方法
public class User { String username = null; String password = null; 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; } }
  1. Action中新建实体类对象并生成setters和getters方法
(不需要实例化) User user = null;
  1. 修该前台页面
<form action="test/user_login.action"> <input name="user.username" type="text"> <input name="user.password" type="password"> <input type="submit"> </form>
  • 使用ModelDriven接收参数
  1. 实例化实体类对象
User user = new User();
  1. Action实现ModelDriven接口
public class LoginAction extends ActionSupport implements ModelDriven<User>{
  1. 实现getModel方法
public User getModel() { // TODO Auto-generated method stub return user; }
  1. 不需要修改前台页面
  2. 获取List数据
  3. 前台界面
<input name="bookList[0]" type="text"> <input name="bookList[1]" type="text"> <input name="bookList[2]" type="text">
  1. 实体类新建List属性并且实例化
  2. <result name="input">/login.jsp</result>
input 接收参数类型转换失败 发生错误或者添加错误 this.addFieldError("username","用户名为空"); 如果this.addFieldError() 不放在 public voidvalidate() {  }里面不会自动跳转到input
  1. 处理结果类型
SUCCESS Action正确执行完成, 返回相应的视图succes是name属性的默认值   NONE 表示Action正确执行, 但不返回任何视图   ERROR 表示Action执行失败, 返回到错误处理视图   LOGIN Action 因为用户没有登录的原因没有正确执行将返回该登录视图要求用户登录验证   INPUT 对参数经行验证,如没有验证通过将自动返回该视图