Struts 2 的使用

1 篇文章 0 订阅
1 篇文章 0 订阅

这里只做个简单的总结吧!

Web.xml配置

<!-- 配置Struts 2框架的核心Filter -->
<!-- FilterDispatcher将会加载应用的Struts 2框架-->
      <filter>
           <!-- 配置Struts 2核心Filter的名字 -->
           <filter-name>struts</filter-name>
           <!-- 配置Struts 2核心Filter的实现类 -->
           <filter-class>
                 org.apache.struts2.dispatcher.FilterDispatcher
           </filter-class>
           <init-param>
                 <!-- 配置Struts 2框架默认加载的Action包结构,以英文逗号(,)隔开 -->
                 <param-name>actionPackages</param-name>
                 <param-value>
                      org.apache.struts2.showcase.person
                 </param-value>
           </init-param>
           <!-- 配置Struts 2框架的配置提供者类以英文逗号(,)隔开-->
           <init-param>
                 <param-name>configProviders</param-name>
                <param-value>lee.MyConfigurationProvider</param-value>
           </init-param>
			还可以配置struts2常量
      </filter>

Strust.xml配置

Struts运行顺序

1.     struts-default.xml

2.     struts-plugin.xml

3.     struts.xml

4.  struts.properties

5.  web.xml

<struts>
    //页面可以访问静态方法
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
//动态更新页面
<constant name="struts.devMode" value="false" />
//引用外部struts.xml的配置
<include file="example.xml"/>
   
<!-- 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开 -->
    <constant name="struts.action.extension" value="do,action"></constant>

    <!-- 指定默认编码集,使用于HttpServletRequest的setCharacterEncoding方法,和freemarker ,velocity 的输出 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>

    <!-- 设置浏览器是否缓存静态内容,默认值为true(部署阶段开启(true)), 开发阶段最好关闭 -->
    <constant name="struts.serve.static.browserCache" value="false" />

    <!-- 
        当struts.xml 的配置文件修改后,系统是否自动重新加载该文件,
        默认为false(部署阶段开启(false)), 开发阶段最好打开. 
    -->
    <constant name="struts.configuration.xml.reload" value="true" />

    <!-- 在开发模式下使用,这样可以打印出更详细的错误信息 -->
    <constant name="struts.devMode" value="true" />

    <!-- 默认的视图主题  -->
    <constant name="struts.ui.theme" value="simple" />

    <!-- 与spring 集成时,指定由spring容器负责action 的创建 -->
    <constant name="struts.objectFactory" value="spring" />
    
    <!-- 该属性设置struts2是否支持动态方法调用,该值默认为:true,如果要关闭动态方法调用,则可以设置为:false -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    
    <!-- 设置上传文件的大小限制 -->
<constant name="struts.multipart.maxSize" value="10701096" />
 

<!-- Add packages here -->
<!-- <package>用来分类  namespace必须以/开头  
<package name="default" namespace="/" extends="struts-default">
    //默认访问的页面
     <default-action-ref name="index" />  //name指向action的name
     <action name="*-*" class="com.huaxin.bbs2010.action.{1}Action" method="{2}">
       		<result>/admin/{1}-{2}.jsp</result> 
       		<result name="input">/admin/{1}-{2}.jsp</result> 	
       </action>
</package>
</struts>
Action

1.        struts2中的路径是根据Action 类的路径,而不是jsp路径来确定的

2.        实现一个Action的最常用方式:从ActionSupport继承

3.        DMI动态方法调用 在URL地址上 xxx !yyyy   // 调用xxxAction里的 yyyy方法

4.        通配符配置 *   {1} {2} …

a)        *_*

5.        接收参数的方法(一般用属性或者DomainModel来接收)

a)        在URL中用 ?user.id = 1 @user.name=”张三”    //xxxAction 必须引用User user 可以不实例化

b)        直接传XXXAction 的属性 id , name

6.        简单参数验证addFieldError

a)        addFieldError(“key”, value);

b)        <s: fielderror fieldName=”key” thema=”simple” />

7.        访问Web元素

a)        Context Stack 装的是Map类型

b)        实现RequestAware,SessionAware,ApplicationAware,ParameterAware的接口,通过Map来对request,session,application,request string 和 表单数据的访问

c)        ServletRequestAware 对应HttpServletRequest

d)        ServletResponseAware对应HttpServletResponse

e)        ServletContextAware 对应SevletContext

f)         Map类型

                        i.   IoC   
                            LoginAction2  implements  RequestAware 
                            private Map<String, Object> request; 
                            @Override
                            public void setRequest(Map<String, Object> request) {

                                           this.request= request;

                        ii.  }

g)        原始类型

    public class LoginAction4extends ActionSupport implements ServletRequestAware {

         private HttpServletRequest request;

         private HttpSession session;

         private ServletContext application;

        

         public String execute() {

                   request.setAttribute("r1","r1");

                   session.setAttribute("s1","s1");

                   application.setAttribute("a1","a1");

                   return SUCCESS;

         }

 

         @Override

         public void setServletRequest(HttpServletRequest request) {

                   this.request = request;

                   this.session = request.getSession();

                   this.application = session.getServletContext();

          }

}

JSP 获取 valuestack

<%@ pageimport="com.opensymphony.xwork2.util.*"%> 

<%   

ValueStack vs =(ValueStack)request.getAttribute("struts.valueStack");  

List someThing=(List)vs.findValue("someThing");  

%>

Result

1.        常用四种类型:

a)        dispatcher(默认) //服务器跳转,在服务器内部转换

b)        redirect          //重定向跳转,之前的所有请求属性,请求参数都丢失。(即拿不到request容器的东西 )

c)        chain                           //服务器直接访问Action 类

d)        redirectAction     //重定向Action类

e)        stream   //图片,文件

2.        全局结果集

a)        <global-result> <result name=”mainPage” />exception.jsp</result> </global-result>

3.        传递参数

a)        一次request只有一个valueStack

b)        客户端跳转才需要传递

c)        <result type="redirect">/user_success.jsp?t=${type}</result> 从value.stack取值

 

对于 struts2的action而言,如果该action包含了输入验证功能,只有进入该action时fielderror不为空,几时该fielderror不是该action本身引起的,它也会转入改action的input result


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值