当前位置: 代码迷 >> Eclipse >> struts2.0.14在myeclipse上的环境搭建和第一个例子
  详细解决方案

struts2.0.14在myeclipse上的环境搭建和第一个例子

热度:51   发布时间:2016-04-23 12:34:31.0
struts2.0.14在myeclipse下的环境搭建和第一个例子

注:本文是在看过黎活明老师的视频前2章后写下的。

Struts2是在webwork2基础上发展而来的,struts2属于MVC框架。

?

Struts2相对于struts1的优点:

1struts2提供了拦截器,利用拦截器可以进行AOP(Aspect Oriented Programming)编程,实现如权限拦截等功能。

2struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在strut1中,如果要实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器才行。

3,提供了支持多种表现层技术,如jspfreemarker

4,输入校验可以对指定方法进行校验

5,提供了全局范围,包范围和Action范围的国际化资源文件管理实现

?

搭建开发环境:

1, 找到所需的jar文件

Jar文件在官网可以下载:http://struts.apache.org/

??? 根据所需下载相应的版本,下载struts-x.x.x-all.zip即可,解压后,在lib下可以找到以下的jar文件。

???????? struts2-core-2.x.x.jarstruts2框架的核心类库

???????? xwork-2.x.x.jarxwork类库,struts2在其上构建

???????? ognl-2.6.x.jar:对象图导航语言,struts2框架通过其读写对象的属性

???????? freemarker-2.3.x.jarstruts2ui标签的模板使用freemarker编写

???????? commons-logging-1.1.x.jarASF出品的日志包,struts2框架使用这个日志包来支持log4jdk1.4+的日志记录

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

2,编写配置文件

src下新建xml文件:struts.xml

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>

3,在web.xml中加入struts2mvc框架启动配置

修改/WebRoot/WEB-INF/web.xml文件:

??? <filter>

??????? <filter-name>struts2</filter-name>

??????? <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

??? </filter>

??? <filter-mapping>

??????? <filter-name>struts2</filter-name>

??????? <url-pattern>/*</url-pattern>

??? </filter-mapping>

struts1中,struts框架是通过servlet启动的,而在struts2中,struts框架是通过filter启动

注意事项:在struts2读取到struts.xml的内容后,以javabean的形式存放在内存中,以后struts对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml

war文件解压:jar xvf *.war(在官网下载的压缩包里面有4war文件,解压后是4个例子)

?

通过以上操作,一个struts2的环境就搭建好了

?

包的介绍:

struts.xml配置中的包介绍:在struts.xml中是可以配置多个包

<package name="sue" namespace="/test" extends="struts-default">

<action name="helloworld" class="com.action.HelloWorldAction" method="execute">

?<result name="success">/WEB-INF/page/hello.jsp</result>//视图名称,定义视图路径

?</action>

</package>

使用包来管理action,包的作用和java中的类包是非常相似的,它主要用于管理一组业务功能相关的action,在实际应用中,我们应该把一组业务功能相关的action放在同一个包下。在一个package中,是可以定义多个action的。(这样相对struts1可以减少重复的代码)

配置包时必须制定name属性,该name可以任意取名字,name主要供继承使用

但是必须是唯一的,它不对应java类包。如果其它包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下action的路径的一部分,如访问上面例子的action,访问路径为:

/test/helloworld.action

namespace属性可以不配置,默认命名空间为""(空字符串)

?

通常每个包都应该继承struts-default,因为struts2很多核心的功能都是拦截器实现(请求数据的获取,文件上传,数据校验)的,struts-default定义了这些拦截器和result类型,可以这么说,当包继承了struts-default才能使用struts2提供的核心功能

struts-default包是在struts2-core-2.x.x.jar文件中struts-default.xml中定义

struts-default.xml也是struts2默认配置文件,struts2每次都会自动加载struts-default.xml(抽象包)文件

?

包还可以通过abstract=true”定义为抽象包,抽象包中不能包含action

只能被其他包继承

?

?


?

第一个例子:

struts.xml文件中配置如下的package

<?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="sue" namespace="/test" extends="struts-default">

??????? <action name="helloworld" class="com.struts2.action.HelloWorldAction" method="execute">

??????????? <result name="success">/WEB-INF/page/hello.jsp</result>

???? ???</action>

??? </package>

</struts>

?

建的包名为sue,命名空间为test,继承了包struts-defaultaction名为helloworldclass路径为包com.struts2.action,下的类HelloWorldAction方法为execute,返回字符串为:success执行action后跳转的页面是/WEB-INF/page/下的hello.jsp文件。(放在web-inf文件下的原因是:在该路径下,客户端是无法看见的,具体的原因我也不太清楚)

访问此action的路径为:/test/helloworld.action

?

Package创建好后,在src下创建包,包名为:com.struts2.action,在此包中新建java文件,名字为:HelloWorldAction,文件内容为:

package com.struts2.action;

?

public class HelloWorldAction {

??? private String message;

???

??? public String getMessage() {

?????? return message;

??? }

?

??? public void setMessage(String message) {

?????? this.message = message;

??? }

?

??? public String execute(){//action返回值要求必须是String类型

?????? message = "我的第一个struts";

?????? return "success";

??? }

}

?

?

在文件/WEB-INF/下创建page文件夹,在page文件夹下新建jsp,名字为hello

<body></body>标签中加入一句代码如下:

? <body>

??? This is my JSP page. <br>${message }

? </body>

?

将此项目加载到tomcat下,启动tomcat后,在浏览器的访问路径为:

http://localhost:8080/struts2/test/helloworld.action
?以上为第一个例子

?

期间遇到的问题:访问路径最后的后缀为:.action

我在配置好后,一直提示请求路径是无效的,后来才发现少了后缀

?

附件为第一个例子的代码

  相关解决方案