当前位置: 代码迷 >> Web前端 >> 一个容易的struts2环境
  详细解决方案

一个容易的struts2环境

热度:306   发布时间:2012-07-25 09:43:06.0
一个简单的struts2环境

* 创建web工程

* 引入struts2需要的jar (最少依赖包)

??????? struts2-core-2.1.8.1.jar :Struts 2框架的核心类库

?????? ??? xwork-core-2.1.6.jar :XWork类库,Struts 2在其上构建

?????? ??? ognl-2.7.3.jar :对象图导航语言(Object Graph Navigation Language),

?????? ??????????????????????? struts2框架通过其读写对象的属性

?????? ??? freemarker-2.3.15.jar :Struts 2UI标签的模板使用FreeMarker编写

?????? ??? commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4JJDK 1.4+的日志记录。

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

?????? ??? commons-io-1.3.2.jar,上传文件依赖的jar

?????? ???

* 定义jsp页面

?????? <ahref="${pageContext.request.contextPath}/primer/helloWorldAction.action">helloWorld</a><br>????? ??

* 创建action

?????? public class HelloWorldAction implements Action{

???????????????????? public String execute() throws Exception {

??????????????????????????? System.out.println("HelloWorldAction action");

??????????????????????????? return "success";

???????????????????? }

?????? }

??????

* 创建struts.xml文件

????? * 该文件放置在src

????? * 该文件的规范在struts2-core-2.1.8.1.jar包下/struts-2.1.7.dtd文件中

????? * 配置如下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

"http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>

<!-- ?客户端的请求路径 /primer/helloWorldAction.action-->

<!-- package标签:类似于java中的包,规范化管理

?????? * name:包的唯一名称, 主要作用用于继承

?????? * namespace:命名空间,包的唯一标识,根据该属性,来查找具体是哪一个包

?????? * extends:该属性用于继承其他的包,struts2中必须继承struts-default包,该包在struts2-core-2.1.8.1.jar/struts-default.xml文件中代码如下

<package name="struts-default" abstract="true">

?action标签:请求的action的配置

* name:action的唯一标识,代表的是请求的action的名称

?????? * class:对应的action的完整的类路径

????????????? result:标签:表示返回的结果

?????? * name:属性:该标签的唯一名称.该属性的值必须和execute方法的返回值相同

????????????? public String execute() throws Exception {

??????????????????????????? System.out.println("HelloWorldAction action");

?????????????????????????????????? return "success";

??????????????????????????? }

?????? * result中文本:要转向的路径

-->?

<!--??? 注意/不能丢,否则找不到Action-->

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

?????? <action name="helloWorldAction" class="cn.itcast.primer.HelloWorldAction">

????????????? <result name="success">/primer/success.jsp</result>

????????????? <result name="error">/primer/error.jsp</result>

</action>

</package>

</struts>

为什么要继承struts-default.xml

原因:struts-default.xml文件中,定义了拦截器和拦截器栈,struts2中很多工作是由拦截器完成的,如果不继承struts-default,struts2什么都不能干????????

??

????????????????????

* web.xml文件中配置过滤器,加载struts.xml文件

<filter>

?????? <filter-name>StrutsPrepareAndExecuteFilter</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

?????? <filter-name>StrutsPrepareAndExecuteFilter</filter-name>

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

?????? </filter-mapping>

?

???????

* 测试:

?????? http://localhost:808/itcast1021struts2/primer/test.jsp

?????

struts2 配置文件加载顺序:struts-default.xml àstruts-plugin.xml--à struts.xml

  相关解决方案