`
morning2008
  • 浏览: 114904 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Struts 2.1 两天快速入门(第一天上午)转

 
阅读更多

第一天上午学习目录列表:

一、第一个struts2.1应用开发

二、Action配置的各项默认值

三、配置的各种视图转发类型

四、Action属性注入值

五、Struts 2.1处理的请求



开发环境:MyEclipse+Tomcat6.x

一、第一个struts2应用开发
1.1、开发Struts 2程序最少需要的JAR如下:

struts2-core-2.x.x.jar :Struts 2框架的核心类库
xwork-core-2.x.x.jar :XWork类库,Struts 2在其上构建
ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.x.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件



1.2、Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/classes下,该文件的配置模板如下:

Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts> 知识提示:此模板可在struts-2.1.6\apps\struts2-blank-2.1.6.war的空白项目里面拷.



1.3、struts2框架是通过Filter启动的。他在web.xml中的配置如下:



Xml代码
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 知识提示:在StrutsPrepareAndExecuteFilter的init()方法中将会加载类路径下默认的配置文件struts.xml完成初始化操作,些初始化工作只做一次,在服务器启动过程中完成.



1.4、第一个Struts2版HelloWorld.



1.4.1、新建cn.gkit.action.HelloWorldAction类,代码如下:



Java代码
public class HelloWorldAction {

private String message;
public String getMessage() {
return message;
}
//返回的是一个字符串
public String execute(){
message = "struts2版的HelloWorld";
return "success";
}
}

public class HelloWorldAction {

private String message;
public String getMessage() {
return message;
}
//返回的是一个字符串
public String execute(){
message = "struts2版的HelloWorld";
return "success";
}
} 知识提示:可以看到此Action类并没有继承其它类,是一个简单的POJO类.



1.4.2、action在struts.xml里的配置:



Java代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.gkit.action.HelloWorldAction" method="execute" >
<result name="success">/WEB-INF/jsp/helloworld.jsp</result>
</action>
</package>
</struts>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.gkit.action.HelloWorldAction" method="execute" >
<result name="success">/WEB-INF/jsp/helloworld.jsp</result>
</action>
</package>
</struts> 知识提示:<package>表示一个包,类似java包. 此包可以被其它包继承.继承的属性是extends. test包就继承了一个struts的默认包struts-default.struts-default包定义在struts-defautl.xml配置文件里,可以在struts2核心包根路径下面找到.namespace属性表示命名空间,可以把请求路径相同的一部分抽取出来。如访问helloworld请求的路径为:/struts2.1/test/helloworld,其中struts2.1是指向该应用程序的虚拟目录(即内容路径).<result>表示返回的视图,具体配置会在第三章中讲到.



1.4.3、在helloworld.jsp显示message信息:



Java代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>struts2.1版HelloWorld</title>
</head>
<body>
${message}
</body>
</html>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>struts2.1版HelloWorld</title>
</head>
<body>
${message}
</body>
</html> 知识提示:用el表达式可以将action里的属性取出来.



二、Action配置(struts.xml--<action>)的各项默认值
1>如果没有为action指定class属性,默认是ActionSupport。

2>如果没有为action指定method属性,默认执行action中的execute() 方法。
3>如果没有指定result的name属性,默认值为success。

如在test包里增加如下一个action请求

Xml代码
<action name="registerUI">
<result>/WEB-INF/page/register.jsp</result>
</action>

<action name="registerUI">
<result>/WEB-INF/page/register.jsp</result>
</action> 知识提示:当访问路径/struts2.1/test/registerUI时,返回给浏览器的就是register.jsp页面.配置相当于struts1.x,如下:

Xml代码
<action path="/test/regiterUI" forward="/WEB-INF/page/register.jsp"/>

<action path="/test/regiterUI" forward="/WEB-INF/page/register.jsp"/>

三、配置的各种视图转发类型
<result>配置类似于struts1中的<forward>,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值)、 redirect(重定向) 、 redirectAction 、 plainText (文本).



3.1、redirect

但在<result>中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。

将1.4.2里的struts.xml配置文件里的<result>改成如下:

Xml代码
<result type="redirect">/helloworld.jsp?message=${message}</result>

<result type="redirect">/helloworld.jsp?message=${message}</result> 知识提示: 此时的helloworld.jsp应放在WebRoot目录下才可重定向访问.而在struts1.x的配置文件里的是做不到这一点的. 除非使用urlrewrite重写url,但也不能传一个action里的属性值. 重新访问/struts2.1/test/helloworld请求,浏览器地址将变为/struts2.1/helloworld.jsp?message=struts2H凥elloWorld.这里先忽略中文乱码问题.



3.2、plaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们可以使用此类型。配置如下:

Java代码
<result name="source" type="plainText ">
<param name="location">/view.jsp</param>
<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result>

<result name="source" type="plainText ">
<param name="location">/view.jsp</param>
<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result> 知识提示:当访问该请求时,返回的一个jsp页面代码文体视图,即jsp页面代码将不会被执行.



3.3、redirectAction作用与redirect类似,不同的是它重定向的是一个action.

四、Action属性注入值


属性注入类似于spring的属性注入,原理上是一样的, 都是通过反射技术将xml对应的值设值到相对应的java属性里.被注入的属性也要有对应的setter方法.

1、在HelloWorldAction 类里增加一下setter方法:



Java代码
public void setMessage(String message) {
this.message = message;
}

public void setMessage(String message) {
this.message = message;
} 2、为了避免覆盖,将execute方法里给message赋值的那一段代码注释掉.



3、在struts.xml配置文件的<action>增加一个子标签<param name="">,配置改成如下:

Xml代码
<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.gkit.action.HelloWorldAction" method="execute" >
<param name="message">属性注入</param>
t;result name="success">/WEB-INF/jsp/helloworld.jsp</result>
</action>
</package>

<package name="test" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.gkit.action.HelloWorldAction" method="execute" >
<param name="message">属性注入</param>
<result name="success">/WEB-INF/jsp/helloworld.jsp</result>
</action>
</package> 此时访问该请求,页面显示的mesage属性值为: 属性注入

五、Struts 2处理的请求
1、指定需要Struts 2处理的请求后缀,配置文件struts.xml配置里增加一下常量标签<constant>



Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>

2、如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号隔开。如:



Xml代码
<constant name="struts.action.extension" value="do,htm"/>

<constant name="struts.action.extension" value="do,htm"/>


3、常量名struts.action.extension可以在default.properties里找到,里面包含了struts2默认的常量值.default.properties可以在struts2核心包下的org.apache.struts2下找到.



第一天上午内容结束.

分享到:
评论

相关推荐

    Struts2.1权威指南——基于WebWork核心的MVC开发.zip

    《Struts 2.1权威指南》特点为:1.经验丰富,针对性强 《Struts 2.1权威指南》凝聚了作者大量的实际开发经验和感悟。作者依照读者的学习规律,首先介绍基本概念和基本操作,然后对内容进行深入讲解。 2.讲解具体,...

    struts2.1完整jar包

    Struts2.1是Apache软件基金会的开源框架Struts的第二个主要版本,它基于MVC(Model-View-Controller)设计模式,为Java Web应用程序提供了一种强大的开发框架。Struts2的核心目标是简化Web应用的开发过程,提高代码...

    struts2.1数据类型转换2

    struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2

    Struts 2.1 Libraries

    Struts 2.1 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会维护。它旨在提供一个结构化的、可扩展的平台,帮助开发者构建可维护性高、易于扩展的企业级Web应用。在这个...

    struts2.1教程

    - **框架定义**:Struts 2.1 是一款基于Java的开源Web应用开发框架,继承了Struts 1.x的优秀特性,并在很多方面进行了改进和优化。它提供了一种构建可扩展且易于维护的Web应用程序的方法。 - **主要特点**: - **...

    struts2.1 jar包

    struts2.1在tomcat下载的包总是报错,根据tomcat官方解释修改后无任何错误,并且已经运行

    Struts2.1权威指南2

    Struts2.1权威指南 李刚的著作 共四个部分 用7-zip解压

    struts2.0升级到struts2.1的工具

    struts2.0升级到struts2.1的工具,自动修改配置文件和页面

    Struts2.1 源码+开发包(项目依赖库)

    Struts2.1是Apache软件基金会的开源框架,主要用于构建基于Java EE的Web应用程序。它在Struts1的基础上进行了重大改进,提供了更强大的MVC(Model-View-Controller)架构支持,增强了动作处理、异常处理、国际化、...

    Struts 2.1 权威指南 part13 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part04 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part01 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part02 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part06 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part03 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part05 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part11 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part12 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part10 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

    Struts 2.1 权威指南 part07 pdf

    改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序...

Global site tag (gtag.js) - Google Analytics