Struts2复习笔记

3大框架用久了,有很多东西遗忘,而且变的只会用而不知所以然,所以这次复习一下最开始学习时的内容。主要记录生疏和遗忘的部分。

一、框架介绍

Java框架主要是配置,配置结合程序。

中央控制器(又叫前端控制器):Dispatcher;后端控制器(或称为业务控制器):Action。在Struts2中,Action被归到Model层,只有中央控制器才是Controller层

解析XML:DOM解析(速度慢,多用于小文件解析,容易学习),Sax解析(速度快效率高,多用于大文件解析,相比DOM要难些)

Action是线程安全的,每经过XML中的<action>节点一次,就相当于new了一次,所以Action是线程安全的。Servlet不是线程安全的。

二、下载

有Full Distribution,Example Applications,Essential Dependencies Only,Documentation,Source几种,其中Full Distribution是完全包,包括之后的几种。下载Full Distribution。

包的内容:

app中的例子是War包,把war包放到tomcat下的webapps下,启动tomcat的时候,会自动解压war包,并部署。

docs:WW下的index.html是离线版的Struts文档。和官网首页上点击“get Start”进入的页面一样

lib:根据使用的需要导入。其中的jar包有冲突的,所以不能一次完全导入。使用时基本的jar包有

三、使用

1.struts下载包中有很多jar包,其中9个最基本的要导入的jar包:commons-lang.jar,commons-io.jar,commons-fileupload.jar,commons-logging.jar,freemarker.jar,javassist.jar,struts2-core.jar,xwork-core.jar,ognl.jar

2.配置中央控制器(filter),过滤所有:/*(不仅是/*.action)

在项目下点击:Web App Libraries→点击struts2-core-2.3.1.2.jar→进入目录org.apache.struts2/dispatcher/ng/filter→其中strutsPrepareAndExecuteFilter.class文件就是要配置的中央控制器。双击它,出现如图页面:

点击"Attach Source"按钮,选择external folder选择jar包所在磁盘,打开Struts2下载包,选择src目录,即可查看文件(jar包的内容是只读的)。

框架的异常从下往上看,下面通常是问题的根本。

3.创建struts.xml(配置文件)

该文件名不能改。

XML文件的验证有两种:DTD和Schema

struts.xml的验证需要导入struts-2.3.dtd(在struts2-core.jar包下),写的是struts.xml的验证。

package要继承struts-default.xml(在struts2-core-2.3.1.2.jar中,是struts2运行的核心)中的package名称

default.properties中时struts2的各种配置,其中,

1 struts.action.extension=action,,

表示可以为action或没有后缀(另:struts1中常用的后缀是.do,struts2常用的后缀是.action)

修改default.properties配置有两种方法:①struts.properties(文件名不可改)②struts.xml中<constant>节点(两种都写的时候struts.properties文件有限起作用)

4.写Action

①Action中的execute方法每个Action中都有一个默认的execute方法,当我们把execute方法写出来的时候,就覆盖了默认的;不写出来的时候,就存在一个默认的execute方法;访问Action类同名的路径(去掉Action,类首字母小写的路径)会执行execute方法。

②当没有配置执行action的那个方法时(无论是XML配置还是注解),默认执行execute方法

③验证action是线程安全的方法:写构造函数,请求的时候看构造方法的执行遍数,如果每次请求都执行一次构造方法,则表明是线程安全;如果请求了多次,只执行了一次构造方法,则不是线程安全。

④部署项目:struts.xml中/表示WebRoot:/WEB-INF/.../xx.jsp或者直接index.jsp

⑤参数传递

除了变量通过set、get方法传递参数之外,还有以下几种情况:

(1)当result的跳转方式是redirectAction的时候,传递参数code(chain方式的可以跨域传值,所以不需要这样写)

<action name="userlogin" class="com.it.action.LoginAction" method="login">
    <result name="success">/WEB-INF/views/welcome.jsp</result>
    <result name="error" type="redirectAction">
        <param name="actionName">login</param>
        <param name="code">10001</param>
    </result>
</action>

 

(2)JSP中对象的属性,name属性的写法

<input name="user.username" />

(3)在(1)中的代码中,如果code属性是从Action传过来的变量,写法:

……
<param>${code}</param>
……

类似于EL表达式,但不是EL,本质是调用Action中的getXXX方法

⑥ActionContext

⑦Action的设计:没有继承什么类,也没有涉及Http相关的东西,是独立的一个Class。这个设计也是为了之后的单元测试。Action类可以单独使用,单独测试,不涉及其他内容。

⑧ActionSupport类,查看源码:选择external folder选择jar包所在磁盘,打开Struts2下载包,选择struts→src→xwork-core选择即可

四、应用

①文件下载

<result type="stream">   </result>

 

posted @ 2015-03-09 11:03  夏天的尾巴%  阅读(269)  评论(0编辑  收藏  举报