`
liurun_225
  • 浏览: 10546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2学习笔记

阅读更多
一、Struts2框架搜索Struts2常量的顺序:

      1. struts-default.xml 
      2. struts-plugin.xml 
      3. struts.xml 
      4. struts.properties 
      5. web.xml

 

二、配置

     在web.xml文件配置Struts2过滤器

 

     1、配置包:一个包可以继承其它包。抽象包不能包含Action定义。父包应该在子包前面定义。

 

     2、配置命名空间:默认的命名空间是"",命名空间必须以“/”开头。命名空间只有一个级别。

 

     3、配置Action:

          当配置Action没有指定class属性时,系统自动使用ActionSupport类作为默认的Action处理类。

          1)、动态方法调用
                调用格式:ActionName!methodName.action
                需要设置struts.enable.DynamicMethodInvocation为true

          2)、为action元素指定method属性
                <action name="login" class="com.cjm.LoginAction" method="login">

                </action>

          3)、使用通配符
                <action name="*Action" class="com.cjm.LoginAction" method="{1}">
                <action name="*_*" class="com.cjm.{1}" method="{2}">
                <action name="*">
                      <result>/{1}.jsp</result>
                </action>

          4)、默认Action
                <default-action-ref name="defaultAction">

 

     4、配置结果:
          1)、Struts2默认的结果类型是dispatcher,结果默认的name属性值为success
                <result name="success" type="dispatcher">
                      <param name="location">/login.jsp</param>
                      <param name="charSet">GBK</param>
                </result>

          2)、redirect-action结果类型:
                <result name="success" type="dispatcher">
                      <param name="actionName">show</param>
                      <param name="namespace">/sales</param>
                </result>

          3)、在结果里使用OGNL表达式
                格式:${属性名},属性名就是对应Action实例里的属性。
                <result>/${currentSkill.name}.jsp</result>

          4)、全局结果
                <global-results>
                      <result name="success">/target.jsp</result>
                </global-results>

 

     5、配置异常:
          1)、全局异常
                <global-exception-mappings>
                      <exception-mapping exception="java.sql.SQLException" result="sql"/>
                      <exception-mapping exception="java.sql.RuntimeException" result="runtime"/>
                </global-exception-mappings>

          2)、输出异常
                <s:property value="exception"/>   输出异常对象本身
                <s:property value="exception.message"/>   
                <s:property value="exceptionStack"/>   输出异常堆栈信息

 

     6、结果类型的用法

          1)、stream

Java代码
  1. public class HelloWorldAction extends BaseAction {   
  2.     private InputStream inputStream;   
  3.   
  4.     public InputStream getInputStream() {   
  5.         return inputStream;   
  6.     }   
  7.        
  8.     public String stream()throws Exception{   
  9.         inputStream = new StringBufferInputStream("test result type of stream!");   
  10.         return "stream";   
  11.     }   
  12. }  
public class HelloWorldAction extends BaseAction {
	private InputStream inputStream;

	public InputStream getInputStream() {
		return inputStream;
	}
	
	public String stream()throws Exception{
		inputStream = new StringBufferInputStream("test result type of stream!");
		return "stream";
	}
}

 

Xml代码
  1. <package name="test" extends="struts-default" namespace="/test">  
  2.     <action name="helloWorld" class="com.cjm.web.action.HelloWorldAction">  
  3.         <result name="stream" type="stream">  
  4.             <param name="contentType">text/html</param>  
  5.             <param name="inputName">inputStream</param>  
  6.         </result>  
  7.     </action>  
  8. </package>  
<package name="test" extends="struts-default" namespace="/test">
	<action name="helloWorld" class="com.cjm.web.action.HelloWorldAction">
		<result name="stream" type="stream">
			<param name="contentType">text/html</param>
			<param name="inputName">inputStream</param>
		</result>
	</action>
</package>

 

 

三、页面取值

      取action里bean属性的值:
            <s:property value="message"/>

 

      取request的属性值:
            ServletActionContext.getRequest().setAttribute("n1", obj);
            <s:property value="#request.n1"/>

 

      取session里的值:
            ActionContext.getContext().getSession().put("n2", obj);
            <s:property value="#session.n2"/>

 

      取application里的值:
            ActionContext.getContext().getApplication().put("n3", obj);
            <s:property value="#application.n3"/>

 

      取ActionContext里的值:
            ActionContext.getContext().put("n4", obj);
            <s:property value="#attr.n4"/>

 

      取URL传过来的参数:
            http://localhost:8888/struts2/helloWorld!show.action?name=liurun
            <s:property value="#parameters.name"/>

 

 

      取在页面用<s:set/>赋的值:
            <s:set name="uid" value="'liurun'"/> ————此处的值要用单引号括起来,否则,将当变量处理
            <s:property value="#uid"/>
            <s:property value="#attr.uid"/>

 

      在控件中取值:
            <s:textfield name="name"  value="%{#parameters._KEEP_MULTI_ENTITY}"/>
            <s:textfield name="name"  value="%{#parameters.name}"/>

 

四、Struts2核心对象

          1)、ServletActionContext

                 HttpServletRequest request = ServletActionContext.getRequest();
                 HttpServletResponse response = ServletActionContext.getResponse();
                 ServletContext servletContext = ServletActionContext.getServletContext();
                 ValueStack valueStack = ServletActionContext.getValueStack(request);
                 PageContext pageContext = ServletActionContext.getPageContext();
                 ActionContext actionContext = ServletActionContext.getContext();

 

          2)、ActionContext

                 ActionContext.getContext().getActionInvocation();  —— return ActionInvocation
                 ActionContext.getContext().getApplication();  —— return Map
                 ActionContext.getContext().getSession();  —— return Map
                 ActionContext.getContext().getParameters();  —— return Map
                 ActionContext.getContext().getValueStack();  —— return ValueStack
                 ActionContext.getContext().getContainer();  —— return Container
                 ActionContext.getContext().get(key);

 

          3)、跟Servlet交互的接口

                 ParameterAware
                 ServletRequestAware
                 ServletResponseAware
                 SessionAware
                 ApplicationAware
                 CookiesAware

分享到:
评论

相关推荐

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    struts2学习笔记

    以上就是Struts2学习笔记中涵盖的主要知识点,这些内容涵盖了从基础到进阶的应用,对于理解和掌握Struts2框架至关重要。尽管对于初学者来说可能有些复杂,但随着深入学习,你会发现Struts2的强大和实用性。

    struts 2 学习笔记

    在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    张龙圣思园struts2学习笔记word

    张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

Global site tag (gtag.js) - Google Analytics