struts2笔记(入门)

2019-08-30 21:49

一、准备工作及实例

1.解压struts-2.1.6-all.zip

apps目录:struts2自带的例子程序 docs目录:官方文档。

lib 目录:存放所有jar文件。 Src 目录:源文件存放地 2.六个基本包

struts2-core-2.1.6.jar :开发的核心类库

freemarker-2.3.13.jar :struts2的UI标签的模板使用freemarker编写 commons-logging-1.0.4.jar :日志包

ognl-2.6.11.jar :对象图导航语言,通过它来读写对象属性 xwork-2.1.2.jar :xwork类库,struts2在其上进行构建

commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后必须加入此jar包

特别需要说明的是目前strust2的最新版本是struts-2.1.6,它作为2.1X的正式版。特别要注意导入commons-fileupload-1.2.1.jar包,在此jar包中包含了RequestContext类,如果不导入该jar包将会报异常。

3.初识struts2配置文件 (1).web.xml文件

主要完成对StrutsPrepareAndExecuteFilter的配置(在以前的版本中是对FilterDispatcher配置,新版本同样支持用FilterDispatcher配置),它的实质是一个过滤器,它负责初始化整个Struts框架并且处理所有的请求。这个过滤器可以包括一些初始化参数,有的参数指定了要加载哪些额外的xml配置文件,还有的会影响struts框架的行为。除了StrutsPrepareAndExecuteFilter外,Struts还提供了一个ActionContexCleanUp类,它的主要任务是当有其它一些过滤器要访问一个初始化好了的struts框架的时候,负责处理一些特殊的清除任务。 (2).struts.xml文件

框架的核心配置文件就是这个默认的struts.xml文件,在这个默认的配置文件里面我们可以根据需要再包括其它一些配置文件。在通常的应用开发中,我们可能想为每个不同的模块单独配置一个struts.xml文件,这样也利于管理和维护。这也是我们要配置的主要文件。 (3).struts.properties(参default.properties)

在Struts框架使用了很多属性,我们可以通过改变这些属性来满足我们的需求。要改变这些属性,只需在struts.properties文件中指定属性的key和value即可。属性文件可以放在任何一个包含在classpath中的路径上,但是通常我们都把它放在/WEB-INF/classes目录下面。我们可以在struts-default.properties文件中找到一个属性的列表。 (4)struts-default.xml

此文件是struts2框架默认加载的配置文件,它定义了struts2一些核心bean和拦截器,它会自动包含(included)到struts.xml文件中(实质是通过),并为我们提供了一些标准的配置。我们可以在struts2-core.jar中找到这个文件。 (5)其它配置文件

velocity.properties,struts-default.vm,struts-plugin.xml 4.让MyEclipse提示xml信息

当我们在编写struts.xml时,发现eclipse并不会给出帮助提示,那是因为MyEclipse默认并不支持struts2,所以我们需要手工导入dtd以支持提示。步骤:[window][preferences][MyEclipse][Files and Editors][XML][xml Catelog]然后在右边点add添加:location为dtd文件所在的位置(struts-2.0.dtd文件struts2-core-2.1.6.jar中可以得到),KeyType选择URI,Key为struts-2.0.dtd文件中文档声明的内容(http://struts.apache.org/dtds/struts-2.0.dtd),在struts.xml文件中也有此key值。 5.如何使用alt+/提示

在MyEclipse6.5中,默认的提示为Ctrl+Space,而它会与我们的输入法切换冲突,使提示失效。找到

1

key,先取消Content Assist命令的绑定,再用“alt+/”来绑定。 6.实例

步骤一,新建myStruts2项目,并导入struts2的六个基本jar包。 步骤二,建立LoginAction文件,主要代码如下:

package com.asm;

import com.opensymphony.xwork2.Action; public class LoginAction implements Action { }

public String execute() throws Exception { }

if (username.equals(\)) { }

return \; return \; } else {

private String username; private String password; ...省略get/set方法

说明:实现了Action接口,主要是为了保证execute的正确定义,其实我们也可以不实现此接口,只要能保证execute方法书写的正确书写(方法名,返回值)。 步骤三,在struts.xml文件中注册LoginAction。此配置文件要放在src目录下,实质就是成为classpath环境变量下的文件。主要代码如下:

\ \>

/success.jsp /failure.jsp

说明:package后面会有详细说明。action元素中的name属性值指定了此action所指定的请求路径为“login.action”。后面login.jsp中的

failure.jsp主要代码

2

<%@ page language=\import=\pageEncoding=\%> <%@ taglib uri=\prefix=\%>

登录失败,错误的用户名:
/login.jsp\>返回

说明:使用了标签库,在struts2中使用标签库非常简单,只需要像上面那样导入标签库便可以使用所有的struts2的所有标签 success.jsp主要代码

登录成功!

步骤五、配置web.xml。完成核心监听器注册。内容如下:

struts2 /* xmlns=\

xmlns:xsi=\ xsi:schemaLocation=\

struts2

注意:在struts2.1.6版本中存在一个bug:即配置了struts.i18n.encoding常量也不能解决中文乱码问题,原因是此版本在获取请求参数后才调用了setCharacterEncoding()方法进行编码设置。解决此bug的方法是配置一个filter,并在doFilter方法中增加如下代码:request.setCharacterEncoding(“UTF-8”); 在以后的2.1.8版本中解决了此问题及2.1.6中存在的其它bug,建议新项目使用2.1.8版本。 8.vo传参模式

Copy上面的myStruts2项目,改名为myStruts2Vo项目。作如下修改:在LoginAction中有两个字段:username,password。把此两个属性重构到com.asm.vo.User类中,然后在LoginAction中提供User对象及相应的get/set方法。现在需要注意的是在login.jsp中会有如下的修改:

户名:
密码:

关键就是改掉name属性值。其它基本无变动。 后话:假如此此User对象并不能和Model层的相应对象完全对应,我们还应借助此User对象在Action中构建出Model层的相应对象,这样,在exectue方法中便能通过构建的Model对象作为参数与Model层交互。 9.ModerDriven传参模式

Copy上面的myStruts2Vo项目,改名为myStruts2Model项目。重点是修改LoginAction,修改后的主要内容如下:

package com.asm;

import com.asm.vo.User;

import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ModelDriven;

public class LoginAction implements Action, ModelDriven {

private User user = new User();

public String execute() throws Exception { }

public User getModel() {

return user;

4

if (user.getUsername().equals(\)) { }

return \; return \; } else {

}

}

说明:它实现了ModelDriven接口,并使用了泛性机制(必须),因此要求jdk1.5以上。

现在需要注意的是在login.jsp中name属性值为User中两个字段,和第一个实例一样。说明:此方式一般不会使用,在此略作了解。

10.为什么要使用struts2代替struts1.x

(1)struts2的execute方法中的参数不会依赖于servletAPI,实现了也servlet解耦,是一种无侵入式的设计。

(2)struts2提供了拦截器,利用拦截器可以进行AOP编程,实现权限拦截等功能。 (3)struts2提供了类型转换器,我们可以很容易地对请求参数转换成需要的类型。 (4)提供了同种表现层技术支持,如JSP、freeMarker、velocity等 (5)可以对指定的方法进行校验,可以轻松地实现表单校验功能

(6)提供了全局范围、包范围和action范围的国际化资源文件管理实现。

二、struts.xml配置及例程

1.配置文件的优先级

在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts.properties和web.xml文件中配置,它们的优先级逐步升高,即是说后面的配置会覆盖掉前面相同的配置。 2.配置形式

下面以对struts.i18n.encoding=UTF-8的配置为例进行说明: 在struts.xml配置形式如下:

在struts.properties的配置形式如下:

struts.i18n.encoding=UTF-8 在web.xml中配置如下:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts.i18n.encoding UTF-8

说明:官方声称配置了此常量可以解决中文乱码问题,但实事上并不能达到目的,在前面的三个项目中,如

果我们在表单中输入中文,其结果是会出现乱码。解决此问题参看[一.7的注意]。这是struts2.1.6中的一bug,它的下一版2.1.8已解决此问题。

3.package配置相关 属性名 Name Extends Abstract 是否必须 说明 是 否 否 Package的唯一标识,不允许同名 指定要继承的包 指定名称空间 声明包为抽象否 Namespace 否 下面我们建立struts2package项目来进行package相关测试: 5


struts2笔记(入门).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:11种蒙氏数学教具的使用方法 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: