`

struts知识点总结

阅读更多

一、Action

1namespace

namespace决定了action的访问路径,默认为""namespace可以不写。囊括了其他action处理不了的action

。namespace最好也用模块来进行命名。

 

 2、路径问题

  struts2中的路径问题是根据action的路径而不是jsp路径来确定,jsp中用request.getContextRoot方式来拿到webapp的路径。或者使用myeclipse经常用的,指定basePath

3、动态方法调用DMI 

   

    Action执行的时候并不一定要执行execute方法可以在配置文件中配置Action的时候用method=来指定执行哪个方法,也可以在url地址中动态指定(动态方法调用DMI)(推荐),前者会产生太多的action,所以不推荐使用。

4、通配符的使用

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

 

5、属性接收参数

<!--EndFragment-->

<!--EndFragment-->
<a href="user/user!add?name=a&age=8">

 

6Domain Model接收参数

<!--EndFragment-->

<a href="user/user!add?user.name=a&user.age=8">

7、使用ModelDriven接收参数

    

<a href="user/user!add?name=a&age=8">

 

  对应的action类,要实现ModelDriven接口

 8、简单数据校验

      使用addFieldError.

 9、获取网页元素
     有四种解决方案

  (1

<!--EndFragment-->

<!--EndFragment-->
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();

 

2)需要实现三个接口:RequestAware,SessionAware, ApplicationAware

      覆盖三个set方法;然后就可以直接使用了

 (3)使用ServletActionContext 

<!--EndFragment-->

<!--EndFragment-->
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();

  (4)实现ServletRequestAware接口,覆盖对应方法后就可以直接使用了。

  取值方法

<!--EndFragment-->

<!--EndFragment-->
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />
<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />

 

 10、结果类型

   基本结果类型:  常用的有dispatcher、redirect,chain,redirectAction类型

    全局结果类型,在对应的action映射中找不到时就会访问全局结果映射

<global-results>
      <result name="mainpage">/main.jsp</result>
 </global-results>

 

   动态结果类型:action类中保存映射

 

public String execute() throws Exception {
      if(type == 1) r="/user_success.jsp";
      else if (type == 2) r="/user_error.jsp";
      return "success";
}
<result>${r}</result> 
<a href="user/user?type=1">

 

   向结果传参数

      

<result type="redirect">/user_success.jsp?t=${type}</result>

 

二、ognl表达式

   访问值栈中的action的普通属性: username = <s:property value="username"/> 
    访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%>
    访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/>
    访问值栈中对象的普通方法:<s:property value="password.length()"/><
    访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" />
    访问值栈中action的普通方法:<s:property value="m()" />
    
    访问静态方法:<s:property value="@com.test.ognl.S@s()"/>
    访问静态属性:<s:property value="@com.test.ognl.S@STR"/>
    访问Math类的静态方法:<s:property value="@@max(2,3)" />
    
    访问普通类的构造方法:<s:property value="new com.test.ognl.User(8)"/>
    
    访问List:<s:property value="users"/>
    访问List中某个元素:<s:property value="users[1]"/>
    访问List中元素某个属性的集合:<s:property value="users.{age}"/>
    访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>
    访问Set:<s:property value="dogs"/>
    访问Set中某个元素:<s:property value="dogs[1]"/>
    访问Map:<s:property value="dogMap"/>
    访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/>
    访问Map中所有的key:<s:property value="dogMap.keys"/>
    访问Map中所有的value:<s:property value="dogMap.values"/>
    访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> 
    
    投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
    投影:<s:property value="users.{^#this.age>1}.{age}"/>
    投影:<s:property value="users.{$#this.age>1}.{age}"/>
    投影:<s:property value="users.{$#this.age>1}.{age} == null"/>
    
    []:<s:property value="[0].username"/>

 

三、struts标签

 property: <s:property value="username"/> 
     property 取值为字符串: <s:property value="'username'"/> 
     property 设定默认值: <s:property value="admin" default="管理员"/> 
     property 设定HTML: <s:property value="'<hr/>'" escape="false"/> 
          
     set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username" />
        
     set 从request取值: <s:property value="#request.adminName" />
     set 从ActionContext取值: <s:property value="#adminName" />
        
     set 设定范围: <s:set name="adminPassword" value="password" scope="page"/>
     set 从相应范围取值: <%=pageContext.getAttribute("adminPassword")

     set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password" scope="session"/>
     set 使用#取值: <s:property value="#adminPassword"/> 
     set 从相应范围取值: <s:property value="#session.adminPassword"/> 
    
      bean 定义bean,并使用param来设定新的属性值:
     <s:bean name="com.test.tags.Dog" >
       <s:param name="name" value="'pp'"></s:param>
       <s:property value="name"/>
    </s:bean>
    <s:bean name="com.test.tags.Dog" var="myDog">
       <s:param name="name" value="'oudy'"></s:param>
    </s:bean>
    <s:property value="#myDog.name"/>
        
    if elseif else: 
    age = <s:property value="#parameters.age[0]" /> <br />
    <s:set var="age" value="#parameters.age[0]" />
    <s:if test="#age < 0">wrong age!</s:if>
    <s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
    <s:else>yeah!</s:else><br />
    <s:if test="#parameters.aaa == null">null</s:if>

    遍历集合:<br />
    <s:iterator value="{1, 2, 3}" >
    <s:property/> |
    </s:iterator>
    
    自定义变量:
   <s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
    <s:property value="#x.toUpperCase()"/> |
     </s:iterator>
    
    使用status:
   <s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
   <s:property/> | 
     遍历过的元素总数:<s:property value="#status.count"/> |
     遍历过的元素索引:<s:property value="#status.index"/> |
     当前是偶数?:<s:property value="#status.even"/> |
     当前是奇数?:<s:property value="#status.odd"/> |
     是第一个元素吗?:<s:property value="#status.first"/> |
    是最后一个元素吗?:<s:property value="#status.last"/>
   <br />
   </s:iterator>
        
    <s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
    <s:property value="key"/> | <s:property value="value"/> <br />
    </s:iterator>
    

    <s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
    <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
   </s:iterator> 

 

四 struts2高级属性

  

 1、拦截器(Interceptor

         (1)实现 Interceptor接口,实现init(),destory(),intercept()方法

        (2)继承AbstractInterceptor类,覆盖intercept()方法。

        (3)继承MethodFilterInterceptor类,覆盖doIntercept方法

        (4struts.xml文件中的配置

       

<!--EndFragment-->

<!--EndFragment--><!--EndFragment--><!--EndFragment--><!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->
分享到:
评论

相关推荐

    Struts2知识点总结

    以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...

    struts2 知识点

    ### Struts2知识点详解 #### 一、Struts2框架概览 Struts2是Apache组织推出的一个基于Java EE的Web应用框架,它遵循MVC(Model-View-Controller)设计模式,为开发者提供了构建可扩展、易于维护的Web应用程序的...

    struts的知识点总结

    Struts是Apache软件基金会下的一个开源项目,是一个基于MVC(Model-View-...开发者可以通过学习和掌握这些知识点,提升项目开发效率和代码质量。同时,结合相关工具和源码阅读,能够进一步提升对框架的理解和应用能力。

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    我的struts2的总结

    根据提供的文件信息,我们可以整理出关于Struts2框架的一些关键知识点。尽管原文中的信息较为零散且不完整,但还是可以从中提炼出一些有价值的内容。接下来,我们将详细探讨这些知识点。 ### Struts2简介 Struts2...

    struts2总结大全

    通过以上知识点的详尽解析,开发者可以对Struts2有更深入的理解,从而更好地利用其特性来构建高效、可维护的Web应用。实践是检验真理的唯一标准,因此在理论学习的同时,不断通过实际项目来应用这些知识,才能真正...

    struts2知识总结.txt

    根据提供的文件信息,我们可以将Struts2的相关知识点总结如下: ### Struts2框架概述 - **Struts2** 是一个基于MVC模式的开源Web应用框架,它与JSP、XML、JDK以及Tomcat等技术紧密关联。Struts2在Java Web开发中...

    关于struts实验时的临时总结

    #### 知识点详细解析 ##### 总结1:Struts2 onsubmit 无法返回JavaScript进行验证 **问题描述**:在Struts2框架中,尝试使用`onsubmit`事件调用JavaScript进行表单验证时发现无效。 **原因分析**:`onsubmit`事件...

    Struts2+Spring+Hibernate知识点总结

    ### Struts2+Spring+Hibernate知识点总结 #### Struts2框架概述 - **Struts2的工作流程**: 1. **客户端发起HTTP请求**:客户端浏览器向服务器发送HTTP请求。 2. **FilterDispatcher接收请求**:根据`web.xml`...

    java面试知识点总结--Struts.pdf

    Struts框架是Java Web开发中常用的MVC框架之一,它为构建基于J2EE的Web应用程序提供了结构化的解决方案。在面试中,理解Struts的工作原理和核心组件是至关重要的。 1. **Struts框架初始化流程**: 当Web应用启动时...

    Strust知识点总结

    本资料是Struts2的知识点总结,可以快速回顾Struts的知识点。主要包括:拦截器、结果视图、OGNL、类型转换、国际化、上传下载

    Struts2面试总结2013版

    2013年Java程序员面试Struts2必备知识点总结

    面试知识点总结--struts面试题大全.pdf

    Struts 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web应用...了解以上知识点,有助于准备Struts相关的面试,展示你对Java Web开发的深入理解。在实际工作中,掌握Struts能有效提高开发效率和项目质量。

Global site tag (gtag.js) - Google Analytics