`
raymond.chen
  • 浏览: 1441473 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

学习笔记:杂项

阅读更多

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

<!-- 
	如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,否则,用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。
	从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。

	三个初始化参数:
		1、config参数:指定要加载的配置文件。逗号分割。
		2、actionPackages参数:指定Action类所在的包空间。逗号分割。
		3、configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割。
 -->
<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	<init-param>
		<param-name>actionPackages</param-name>
		<param-value>com.cjm.web.action</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

二、Struts2框架搜索Struts2常量的顺序:

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

 

三、页面取值

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

 

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

 

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

 

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

 

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

 

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

 

      取在页面用<s:set/>赋的值:
            <s:set name="uid" value="'cjm'"/> ————此处的值要用单引号括起来,否则,将当变量处理
            <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}"/>

 

四、配置

     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

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";
	}
}

 

<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>

 

 

     7、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

 

0
5
分享到:
评论

相关推荐

    杂项代码:杂项代码(仅用于娱乐,个人笔记等)

    基于以上信息,我们可以推测这个压缩包可能包含了一系列Jupyter Notebook文件,每个文件代表了一个独立的代码实验、学习笔记或者有趣的小项目。内容可能涵盖数据处理、算法实现、图形绘制等各种主题,且使用了多种...

    Malware-Misc-RE:杂项恶意软件RE

    2. **笔记和报告**:可能包含用Jupyter Notebook创建的分析笔记,详述了分析过程、发现的特征和结果。 3. **工具和脚本**:可能有用于静态分析(如PE查看器、字符串提取工具)和动态分析(如沙箱、网络嗅探器)的...

    你好,世界:杂项存储

    标题 "你好,世界:杂项存储" 暗示了这是一个关于编程入门或者基础概念的项目,可能包含了一些初级的编程示例。"杂项公共存储" 可能指的是一个包含各种不同类型的代码示例或者数据存储方法的集合。由于标签提到了 ...

    struts2学习笔记.doc

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

    笔记:学习阅读学习

    "其他杂项"这部分可能包含一些随机但有价值的信息,比如学习心得或者灵感来源。 "Python"章节显示了编程语言Python的学习内容,可能包括基础语法、数据结构、函数、模块等内容。"Python练习"部分可能提供了实践性的...

    data-and-code:杂项代码,数据,注释等

    标题 "data-and-code: 杂项代码,数据,注释等" 暗示着这是一个包含多种编程资源的集合,主要是用于教学或个人学习目的。其中可能包括各种编程语言的代码片段、数据集以及对这些内容的注释,以便于理解和应用。在...

    linux学习笔记-01linux操作基础

    ### Linux学习笔记—01 Linux操作基础 #### 1. Linux 基础命令与用法 在Linux操作系统中,掌握一系列的基础命令是非常重要的。这些命令可以帮助用户进行各种日常操作,比如文件管理、目录切换、文件查看等。下面将...

    MongoDB_学习笔记

    ### MongoDB 学习笔记知识点详解 #### 一、MongoDB 命令行基础操作 **1.1 帮助命令** - **help**:显示 MongoDB shell 的基本帮助信息。 - **db.help()**:提供当前数据库的帮助信息。 - **db.mycoll.help()**:...

    Node.js-Nodejs学习笔记以及经验总结

    本学习笔记和经验总结将深入探讨Node.js的核心概念、主要特性、常用模块以及实战技巧,帮助你从零基础到熟练掌握Node.js。 一、Node.js核心概念 1. 非阻塞I/O模型:Node.js采用事件驱动、非阻塞I/O模型,提高了...

    es6学习笔记

    本学习笔记将深入探讨ES6中的核心概念,帮助你全面掌握这一现代JavaScript语法。 1. **let 和 const 声明** 在ES6之前,我们主要使用`var`进行变量声明,但`let`和`const`的引入解决了作用域和提升(hoisting)的...

    Bash_shell学习笔记

    根据给定的"Bash shell学习笔记"文件信息,我们可以从中提炼出多个重要的IT知识点,具体如下: ### 1. 引言 - **Shell的角色**:Shell作为一个命令解释器和编程语言,在用户与UNIX/Linux系统内核之间提供了一个桥梁...

    Bash shell 学习笔记

    ### Bash Shell 学习笔记知识点概览 #### 1. 引言 - **Shell**:作为用户与操作系统之间的桥梁,Shell提供了一种与系统进行交互的方式,支持用户执行命令和编写脚本来自动化任务。 - **Bash**:是Bourne-Again ...

    easonyq.github.io:记录学习笔记,生活杂项

    一些学习时的草稿,和生活中的备忘录。 整理成文的目前有:(这些文章也会同时发布在,如果 github 图片转存导致模糊,可以去知乎看原文) 如何让你的网页“看起来”展现地更快 —— 骨架屏二三事 知乎链接 掘金链接 ...

    PDF电子书《Bash Shell学习笔记》

    ### PDF电子书《Bash Shell学习笔记》知识点总结 #### 1. 引言 - **Shell**: Shell是一种命令解释器也是编程语言,为用户提供与操作系统内核交互的界面,支持用户执行各种命令和工具。 - **Bash**: 本书重点介绍的...

    Orcad_Capture CIS_Allegro学习笔记

    Orcad_Capture CIS_Allegro学习笔记 Orcad_Capture CIS_Allegro是一款专业的PCB设计软件,旨在帮助用户快速设计和开发电子电路板。下面是Orcad_Capture CIS_Allegro学习笔记中涉及的一些重要知识点: 1. Q&A:...

    CTF Web学习笔记

    ### CTF Web学习笔记知识点详解 #### 杂项部分 **1. 隐写术** 隐写术是一种将信息隐藏于其他非秘密数据之中的技术,这种技术通常用于隐蔽通信或数据保护。在CTF竞赛中,经常出现的情况是将flag隐藏在图像、音频...

    Vi 学习笔记

    ### Vi学习笔记精要 **Vi(Visual Editor)**,是一种功能强大的文本编辑器,尤其在Unix和Linux系统中广泛使用。本学习笔记全面涵盖了Vi的使用方法,从基础操作到高级技巧,旨在帮助读者掌握Vi的强大编辑能力。 ##...

    HTML学习笔记

    ### HTML学习笔记知识点详解 #### 一、HTML基础知识概述 **1.1 计算机语言简介** - **机器语言**: 使用二进制代码(0 和 1)编写,计算机可以直接识别并执行。 - **汇编语言**: 介于机器语言和高级语言之间,用助...

    thinkphp学习笔记入门到深入篇

    【ThinkPHP学习笔记入门到深入篇】 ThinkPHP是一款基于PHP的开源快速开发框架,它以其简洁的代码结构、高效的性能和强大的功能深受开发者喜爱。这篇笔记涵盖了从基础到深入的多个方面,旨在帮助初学者迅速掌握...

    fromanirh:笔记,文档和其他杂项

    【标题】"fromanirh:笔记,文档和其他杂项"揭示了这是一份个人整理的知识集合,可能包含了作者在IT领域的思考、学习笔记以及一些实用的操作方法。这个标题暗示了资源的多样性,涵盖了从理论理解到实际操作的多个层面...

Global site tag (gtag.js) - Google Analytics