首页 > 代码库 > struts学习笔记(1)基本配置

struts学习笔记(1)基本配置

Struts2  学习笔记

吃透最简单的Helloword实例之后 ,接着再一一去研究 请求参数的接收与发送,参数的封闭,校验,result,struts2标签库这些最为核心的东西(其实这些也正是最常用的东西),经过这样的学习,应该领会了一些Struts2的流程,接着再去阅读相关文档去了解Strust2的拦截器设计思想(这叫先使用再体会的学习方法),接着可以做一些针对于自定义拦截器的实现来深化对Struts2的认识。此时,你已经达到企业中使用的级别了,接下来就可以玩一些SSh整合

一、基本配置
 1.web.xml配置

 <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

2.struts.xml
 默认放在src文件下

 <!--package 类似java的包:用区分不同的请求
  name:给包取的名字  (name属性为每个package设置一个唯一的标识,这个标识在所有的package定义中不能重复)
  
  namespace:与请求地址的对应,对于action配置进行逻辑划分
   namespace="/"  --http://localhost:8080/xxx/分部工程名/下的所有请求
   namespace="/yy"  --http://localhost:8080/xxx/yy分部工程名/下的所有请求
   
  extends: 通过使用extends,你可以指定本package继承另外一个package的所有的配置
 --!>
 <package name="my" namespace="/" extends="struts-default">
  <action name="helloworld" >
   <result>/index.jsp</result>
  </action>
 </package>


 访问URL:localhost:8080/helloworld


 3.action类
  属性:name:是要处理的请求名
  class:请求名所有对应的处理类
  method:请求名所有对应的处理类中的方法(默认为excute)

  <action name="hello" calss="xxx.xxx.xxxxaction" method="execute">

  Struts2 中有3中方式
   a.普通java类,定义execute()方法
   public class xxxAction
   b.实现Action接口,重写execute()方法
   public class xxxAction implements  Action
   c.继承java类ActionSupport
   public class xxxAction extentds ActionSupport

   for example:

  public class MyDefineAction extends ActionSupport{
    @Override
    public String execute() throws Exception {
     return "success";//我们必须返回一个字符串给struts.xml识别
    }
   }

   对应struts2.xml 文件

<package name="my" namespace="/" extends="struts-default" method="execte">
    <action name="hello" class="xxx.xxx.xxx.MyDefineAction>
     <result name="success">/index.jsp</result>
    </action>
   </package>

 我们相应的可以在action中创建不同的method 实现不同的返回,到达不同的.jsp

 不同action:name对应不同的method 
  三种方式: 配置struts.xml中的 action
  a. 普通配置   域名为 http://localhost:8080/Test/register(login)

<package name="my" namespace="/" extends="struts-default">
    <action name="login"  class="com.yc.action.UserAction" method="login">
     <result name="success">login.jsp</result>
    </action>
    <action name="register" class="com.yc.action.UserAction" method="register">
     <result name="success">register.jsp</result>
    </action>
   </package>

  b. 动态配置  url为:  http://localhost:8080/Test/user!register 

<!-- 动态配置 必要设置: struts.enable.DynamicMethodInvocation  value=http://www.mamicode.com/"true"--> > 

  c. 约定配置 采用通配符 url为:  http://localhost:8080/Test/user_register 

 <action name="*_*" class="com.yc.action.{1}Action" method="{2}">
    <result name="success">/{2}.jsp</result>
   </action>


  d.当在对应的action中没有匹配对result,那就到global-result去匹配

  <global-results>
   <result name="fail">/index.jsp</result>
  </global-results>

 <!--注意:global-results这个标签只能放在package中action的前面-->