Struts2-入门案例

来源:互联网 发布:linux 启动网络服务 编辑:程序博客网 时间:2024/05/17 04:48

Struts的下载和安装

Struts2是以WebWork为核心的,它采用拦截器的机制来处理用户的请求。

访问官网http://struts.apache.org/。点击Download

  • Full Distribution:下载Struct2的完整版,通常建议下载该选项,该选项包括Struct2的示例应用、空示例应用、核心库、源代码和文档等。
  • Example Applications:仅下载Struct2的示例应用。
  • Essential Dependencies Only:核心库。
  • Documenttation:相关文档。
  • Source:源码

我用的是struts-2.3.15.1-all.zip,解压完之后,目录结构

  • apps:自带的案例
  • docs:开发文档
  • lib:所有的jar包(用哪个拷贝哪个)
  • src:源码

例子

1.创建web项目struts2

2.导入jar包,13个。参考给的例子struts-2.3.15.1-all\struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib,将里边的jar包都添加上。添加到项目的WEB-INF的lib文件中。(把war文件改成jar文件,然后解压)

  • asm-3.3.jar:操作Java字节码的类库
  • asm-commons-3.3.jar:提供了基于事件的表现形式
  • asm-tree-3.3.jar:提供了基于对象的表现形式
  • commons-fileupload-1.3.jar:Struts2文件上传组件依赖包
  • commons-io-2.0.1.jar:Struts2的输入输出,传文件依赖的JAR
  • commons-lang3-3.1.jar:包含一些数据类型工具,是对java.lang包的增强
  • commons-logging-1.1.3.jar:对日志的扩展
  • freemarker-2.3.19.jar:Struts2标签模板使用的类库
  • javassist-3.11.0.GA.jar:Javascript字节码解释器
  • log4j-1.2.17.jar:日志开源组件
  • ognl-3.0.6.jar:OGNL表达式
  • struts2-core-2.3.15.1.jar:Struts框架的核心类库
  • xwork-core-2.3.15.1.jar:WebWork核心库,Struts2的构建基础。

3.在web.xml配置文件中,配置Struts2的核心过滤器。(去给的例子里去找怎么配)

<!-- 配置Struts2核心过滤器 -->  <filter>    <filter-name>struts2</filter-name>    <filter-class>        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    </filter-class>  </filter>  <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>

4.定义处理用户请求的Action类

package com.eaglezsx.action;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport{    public String execute() throws Exception{        return SUCCESS;    }}

返回值为SUCCESS,该常量字段是从父类中继承的。execute()方法的返回值对应着struts.xml文件中<result>标签中name属性的值,会执行对应处理结果下的资源视图。

5.配置Struts2的配置文件。(去那个例子里边去找怎么配)

在src目录下新建一个名称为struts.xml文件,这个文件必须在classes的根目录下。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <!--Struts2的Action必须放在指定的包空间下定义 -->    <package name="hello" namespace="/" extends="struts-default">         <!-- 定义action -->        <action name="helloWorld" class="com.eaglezsx.action.HelloWorldAction">            <!--定义处理结果和视图资源之间的映射关系-->            <result name="success">/success.jsp</result>        </action>    </package></struts>

对于struts.xml的dtd约束可以在struts2-core-2.3.15.1.jar中的struts-2.3.dtd中找到。

使用dtd来获得本地struts.xml提示:开发过程中国如果可以上网,struts.xml会自动缓存dtd,提供提示功能。如果不能够上网,则需要手动配置本地dtd,这样才能够使struts.xml产生提示。

找到struts-2.3.dtd这个文件,在WEB-INF下建个文件夹dtd,把他放进去。Window–Preferences,搜索xml,找到XML Catalog,User Specified Entries,点击Add,在Location中找到刚才添加的文件,Key type选择URI,Key填写http://struts.apache.org/dtds/struts-2.3.dtd

6.创建视图文件

在WebRoot目录下创建一个index.jap,在其中编写一个超链接,用于访问Action对象

<body>  <a href="${pageContext.request.contextPath }/helloWorld.action">Hello Struts2</a></body>

然后再在WebRoot目录下创建一个success.jsp,作为Action对象处理成功后的返回页面

<body>    欢迎学习第一个Struts2程序</body>

7.执行流程的分析

这里写图片描述

在客户端浏览器上单击index.jsp中的超链接,会发送一个helloWorld.action请求,该请求被核心控制器拦截到,通过匹配struts.xml文件中的配置,找到请求对应的HelloWorldAction,并默认调用HelloWorldAction中的execute()方法,返回逻辑视图名。然后再通过匹配找到并转发到对应的视图页面success.jsp中,最后响应并输出返回结果。