Struts2.X深入浅出 学习笔记

第一节、MVC以及Struts2简介

第二节、Action生命周期以及接收表单数据


第三节、Struts2配置以及Struts.xml详解


  • Struts2 主要配置文件

?





1

2

3

4

5

Web.xml 设置过滤器以及annotation初始化参数

Struts.xml 主配置文件

Struts.properties 默认属性文件

Struts-default.xml 默认配置文件

Struts-plugin.xml 插件配置文件

  • Struts2 主要配置加载次序

?





1

2

3

4

5

6

7

8

由上至下,以此为:

Struts-default.xml

Struts-plugin.xml

Struts.xml

Struts.properties

Web.xml

如果在多个文件中配置了同一个Struts2常量,则后一个文件中的配置的常量值将覆盖前面文件中配置的常量值。在不同文件中配置常量的方式是不一样的,但不管哪个文件中,配置Struts2常量都要指定两个属性:常量name和常量value

推荐在struts.xml文件中配置Struts2常量

  • Struts-default.xml 配置信息

?





1

2

3

4

5

6

7

Bean元素属性

class:必选,指定了Bean实例的实现类

type:可选,通常是通过某个接口或者在此前定一个过的Bean

name:可选,它指定的Bean实例的名字,对于有相同type的多个Bean,name必须唯一

scope:可选,指定Bean的作用域,只能是default、singleton、request、session和thread之一

static:可选,它指定Bean是否使用静态方法注入。通常而言,当指定了type属性时,该属性就不应该设置为true

optional:可选,指定Bean是否是一个可选Bean

  • default.properties 默认属性信息

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

##字符集

struts.i18n.encoding=UTF-8

struts.objectFactory.spring.autoWire = name

struts.objectFactory.spring.useClassCache = true

struts.objectFactory.spring.autoWire.alwaysRespect = false

struts.multipart.parser=jakartastruts.multipart.saveDir=struts.multipart.maxSize=2097152

##请求后缀

struts.action.extension=action,,

struts.serve.static=true

struts.serve.static.browserCache=true

struts.enable.DynamicMethodInvocation = false

struts.enable.SlashesInActionNames = false

struts.mapper.action.prefix.enabled = false

struts.mapper.action.prefix.crossNamespaces = false

struts.tag.altSyntax=true

##开发模式

struts.devMode = false

struts.i18n.reload=false

struts.ui.theme=xhtmlstruts.ui.templateDir=template

struts.ui.theme.expansion.token=~~~struts.ui.templateSuffix=ftl

struts.configuration.xml.reload=false

struts.velocity.configfile = velocity.properties

struts.velocity.contexts =

struts.velocity.toolboxlocation=

struts.url.http.port = 80struts.url.https.port = 443

struts.url.includeParams = none

struts.dispatcher.parametersWorkaround = false

struts.freemarker.templatesCache=false

struts.freemarker.beanwrapperCache=false

struts.freemarker.wrapper.altMap=true

struts.freemarker.mru.max.strong.size=0

struts.xslt.nocache=false

struts.mapper.alwaysSelectFullNamespace=false

struts.ognl.allowStaticMethodAccess=false

struts.el.throwExceptionOnFailure=false

struts.ognl.logMissingProperties=false

struts.ognl.enableExpressionCache=true

struts.handle.exception=true

  • Struts.xml 配置信息

?





1

2

3

4

5

6

7

8

9

10

11

12

<struts>

    <!--重置属性—>

    <constant name="struts.devMode"
value="true"> </constant>

    <constant name="struts.i18n.encoding"
value="urf-8"></constant>

    <!--定义包—>

    <package name="default"
namespace="/"
extend="struts-default">

        <!--动作—>

        <action name=""
class="">

            <result name=""
class=""
></result>

        </action>

    </package>

</struts>

?





1

2

3

4

5

6

7

8

9

10

Constant 常量

Package 包 解决Action重名,方便继承

-name 包名

-extends 父包名

-namespace
命名空间

Action

-name 动作名

-class
实现类

global-results 全局结果

Result 局部结果

第四节、Action 高级


  • method 属性

?





1

2

3

<action name="admin"
class="net.nw.action.AdminAction"
method="add">

    <result>result.jsp</result>

</action>

  • DMI动态方法调用

?





1

2

3

4

<action name="admin"
class="net.nw.action.AdminAction">

    <result>result.jsp</result>

</action>

<a href="<%=path%>/admin/admin!add.action">添加</a>

  • Forword Action(页面跳转)


  • 默认Action

?





1

2

3

4

<default-action-ref
name="error"></default-action-ref>

<action name="error">

    <result>error.jsp</result>

</action>

  • 通配符映射

?





1

2

3

<action name="Student*"
class="net.nw.struts2.action.StudentAction"
method="{1}">

    <result>/Student{1}_success.jsp</result>

</action>

?





1

2

3

4

5

{0} 表示匹配所有内容

{1} 表示前面的第一个*的内容

*  0-N不包括 "/"

** 0-N包括 "/"

\  转义符

  • Zero Configuration (Annotation配置)

?





1

引入struts2-convention-plugin-2.2.1.jar包

?





1

2

3

4

5

6

7

8

9

10

11

12

//web.xml

<filter>

    ……

    <init-param>

    <param-name>actionPackages</param-name>

    <param-value>net.nw.action</param-value>

    </init-param>

    <init-param>

    <param-name>encoding</param-name>

    <param-value>UTF-8</param-value>

    </init-param>

</filter>

?





1

2

3

4

5

6

7

8

//注解

@parentPackage(value="struts-default")

@Namespace(value="/")

@Result(name="login_success",location="/login_success.jsp")

@Results({

@Result(name="login_success",location="/login_success.jsp","type="redirect"),

@Result(name="login_failure",location="/login_failure.jsp","type="redirect")

})

  • 包含模块

?





1

<include file="admin.xml">

  • 出错页面

?





1

2

3

<action name="**">

    <result>error.jsp</result>

</action>

第五节、访问Web元素以及Result类型


  • Action访问web对象四种方式:


1.创建request,session,application Map对象

?





1

2

3

Map request = (Map)ActionContext.getContext().get("request");

Map session = ActionContext.getContext().getsession();

Map application = ActionContext.getContext().getApplication();

2.实现RequestAware,SessionAware,ApplicationAware接口 Map对象(常用)

3.创建传统的HttpServletRequest、HttpSession、ServletContext对象

?





1

2

3

HttpServletReques request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

ServletContext application = session.getServletContext();

4.实现ServletRequestAware、ServletContextAware接口

  • Result类型

?





1

2

3

4

5

6

7

8

9

10

Dispatcher:转发到URL,通常是JSP(服务器)

Redirect:重定向到URL,通常是JSP(客户端)

Chain:转发到一个Action(服务器)

redirectAction:重定向到一个Action(客户端)

freemarker:处理FreeMarker模型

Httpheader:控制特殊HTTP行为的结果类型

Stream:向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据

Velocity:处理Velocity模版

Xslt:处理XML/XLST模版

plainText:显示原始文件内容,例如文件源代码

第六节、Validation框架和i18n

第七节、OGNL(一)


第八节、OGNL(二)

Struts2.X深入浅出 学习笔记,布布扣,bubuko.com

时间: 2024-12-23 01:11:51

Struts2.X深入浅出 学习笔记的相关文章

struts2权威指南学习笔记:struts2引入自定义库

问题: 在jsp页面中添加了s:property标签,然而在页面始终未展示 解决: 经过搜索学习,发现只要添加语句 <%@ taglib prefix="s" uri="/struts-tags"%> 原因: @taglib表明引用标签.类似java中的import语句 prefix="s" 引用的名称在页面可以使用,就像java中生成的一个对象名,以后调用的时候直接使用<s:xxx/>就可以了 uri="/st

js深入浅出学习笔记(一)

js深入浅出 一. new Foo()创建的对象: 1.该对象的原型会指向Foo 的构造器的prototype属性: 好处是 如果访问该对象的属性时,如果该对象不存在,会继续根据原型链查找Foo的prototype属性上的值: 2. 用 in 来判断该属性是否属于该对象时,是true,意思是该属性是该对象的原型链上的: 3. 给该对象的属性赋值时,会先查找原型链上是否存在该属性则修改,如果不存在,则只在该对象增加一个属性并赋值: 4. 用hasOwnProperty来判断该属性是否存在对象上还是

Struts2 校验框架学习笔记

Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更强大. 下面以一个例子来说明Struts2校验框架的使用. 1在myeclipse 中创建一个web工程,在src目录下创建struts.xml 配置文件,添加好xml标头,配置web.xml文件. 1-1.了解一下我做的简单例子需求,实现一个用户注册的功能,用户信息包括用户名,密码,确认密码,年龄

慕课网JavaScript深入浅出学习笔记之数据类型

JavaScript数据类型 六种数据类型(五种原始类型,一种对象类型) number sttring boolean null undefined object #对象 Function Array Date ... javascript数据类型是弱数据类型,在定义变量时无需指定数据类型. var num = 32; num = "this is a string"; 32 + 32 // 64 #加法运算 //"+"理解为字符串拼接,"-"理

[原创]java WEB学习笔记70:Struts2 学习之路-- struts2拦截器源码分析,运行流程

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

struts2学习笔记(8)-------struts2的ajax支持

struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直接看例子: public class LoginAction { private String user; private String pass; private InputStream inputStream; public InputStream getInput(){ return inpu

[原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja