Struts2

来源:互联网 发布:java模拟登陆获取数据 编辑:程序博客网 时间:2024/06/05 12:12

Struts2主要以以下几个方面入手:


1访问Servlet API:

servlet API :  HttpServletRequest,HttpServletResponse,ServletContent 对应的对象为:request ,response,application
struts2中得Action的execute方法,struts2  不存在servlet API  这也是struts2的一种特色
struts2没有servlet  API  但是又不能不用  就提供了三种方式去访问servlet API
2Action的搜索顺序:

3动态方法的调用:

指定method属性 :
web.xml文件配置和上一篇的web.xml一样
struts.xml文件配置:
<struts>   <package name="default" namespace="/" extends="struts-default">   <!--    action默认的method ="execute"-->        <action name="index" class="com.action.HelloWorldAction">            <result>            /HelloWorld.jsp            </result>        </action>         <action name="add" method="add" class="com.action.HelloWorldAction">            <result>            /add.jsp            </result>        </action>         <action name="update" method="update" class="com.action.HelloWorldAction">            <result>            /update.jsp            </result>        </action>    </package></struts>
add.jsp:
<body>    hello struts2!!  add<br>  </body>
update.jsp ,Helloworld.jsp同上
Action类:
package com.action;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class HelloWorldAction extends ActionSupport {@Overridepublic String execute() throws Exception {System.out.println("执行成功");return SUCCESS;}public String add() throws Exception {System.out.println("add执行成功");return SUCCESS;
}public String update() throws Exception {System.out.println("update执行成功");return SUCCESS;}      }
执行流程:
输入url  http://localhost:8080/项目名/index   ---》进入到Struts2框架-----》struts.xml配置文件中的<action name="index" class="com.action.HelloWorldAction">找到相应的Action类并且找到类中相应的method----》返回给struts2框架一个字符串----》执行result标签下的页面。
输入url  http://localhost:8080/项目名/add   ---》进入到Struts2框架-----》struts.xml配置文件中的<action name="index"   method ="add" class="com.action.HelloWorldAction">找到相应的Action类并且找到类中相应的method----》返回给struts2框架一个字符串----》执行result标签下的页面。
最后一个同理 (Action类是一样的)
这样做的弊端就是每个Action都需要配置 这就有了第三种方式(第二种方式访问Action官方不推荐)
通配符的方式:
上面的例子只改变struts.xml配置:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="default" namespace="/" extends="struts-default">
    <action name="index_*" method="{1}" class="com.action.HelloWorldAction">                  <result name="add">/{1}.jsp</result>            <result name="update">/{1}.jsp</result>             <result> /HelloWorld.jsp</result>                   </action>

</package>    </struts>
当用户输入url http://localhost:8080/项目名/index_ 时访问HelloWorld.jsp
当用户输入url  http://localhost:8080/项目名/index_ add 时访问add.jsp  
当用户输入url  http://localhost:8080/项目名/index_ update时访问update.jsp  
*表示通配符 {1} 表示的为第一个*所代表的内容 可以有多个* 
指定多个配置文件:
如果是action太多的话不用写在一个struts.xml中 可以指定多个配置文件使用<include>添加到一个总的struts.xml文件中  <constant>还可以指定编码集注意:1.被include的标签一定要符合struts的dtd规范。也就是说被include的xml文件的内部格式要符合struts的xml文件规范。2.xml文件的编码格式要相同,如果是utf-8,那么都是utf-8。
4默认Action:
 当用户访问不存在的action时  就会跳转到这个页面(404)  <default-action-ref name="默认action名称"><default-action-ref><action name="与上面默认action名称相同"><result>/error.jsp</result><!-- error.jsp为默认action跳转页面--></action>
5配置struts2的action后缀 :  
如果什么都没有配置默认为action 也可以不加后缀    但是当你配置了后缀之后就不能不加后缀   1:在struts.xml文件中配置  2:在过滤器中(web.xml中的<filter>标签内)配置intt-param参数:<init-param>  <param-name>struts.action.extension</param-name>  <param-value>do,action,strtus2</param-value></init-param>3:在struts.properties文件中配置   但是这个不常用


该图表示后缀名为null 意思是不需要写后缀名也可以访问action

                                             
0 0
原创粉丝点击