Struts 2 概述
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
Struts2是一个用来开发MVC应用程序的框架,提供了多种Web 应用程序开发过程中常见问题的解决方案.
创建struts工程步骤
1, 创建web工程
2, 导入struts相关jar包
可以从struts2提供的apps里找blank工程,这里有struts2需要的最少的jar包
* asm-3.3.jar 供了字节码的读写的功能,包含了核心的功能,而其他的jar,都是基于这个核心的扩展.
* asm-commons-3.3.jar 提供了基于事件的表现形式
* asm-tree-3.3.jar 提供了基于对象的表现形式
* commons-fileupload-1.2.2.jar 文件上传组件
* commons-io-2.0.1.jar 上传文件依赖的jar包
* commons-lang3-3.1.jar 对java.lang包的增强
* freemarker-2.3.19.jar FreeMarker 模板引擎使用FreeMarker语言编写
* javassist-3.11.0.GA.jar 代码生成工具, struts2用它在运行时扩展 Java类,可以理解为对属性驱动和模型驱动读写数据的增强
* ognl-3.0.5.jar 对象图导航语言(Object Graph Navigation Language), struts2通过它读写表单对象中的属性
* struts2-core-2.3.4.jar Struts 2框架的核心类库
* xwork-core-2.3.4.jar Command模式框架,WebWork和Struts2都基于xwork,属于核心类库
* commons-logging.jar :ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK 1.4版本之上的日志记录
3, 在web.xml中配置struts的核心过滤器过滤器StrutsPrepareAndExecuteFilter
ctrl+Shift+T 输入StrutsPrepareAndExecuteFilter 找到对应的类,然后查找到过滤器的路径
<!-- 配置过滤器 --> <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>
4, 创建Action需要实现Action接口
public class HelloWorldAction implements Action{ public String execute() throws Exception { System.out.println("HelloWorldAction execute"); return "success"; } }
5,创建jsp文件
在web的 根目录下创建
/test/success.jsp和/test/test.jsp
6, 配置struts.xml文件
<?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> <!-- 请求路径: <a href="/test/helloWorldAction.action">helloWorld</a><br> --> <!-- package标签:相当于java中的包,规范化管理,struts2包可以继承 * name:包的名称,主要作用用于继承,唯一的 * namespace:命名空间,相当于房间号,唯一的,也可以看成包的唯一标识 * extends:用于继承其他的包, * 这里继承了struts-default.xml包.该包存放在struts2-core-2.3.4.jar/struts-default".xml文件 <package name="struts-default" abstract="true"> * 为什么要继承呢? 因为struts-default配置了所有返回的类型,也就是result的type和拦截器,和自带的几个拦截器栈 --> <package name="test" namespace="/test" extends="struts-default"> <!-- 如果请求的action找不到的情况下,则执行该配置指定的action --> <default-action-ref name="helloWorldAction"></default-action-ref> <!-- action:配置请求的路径和action之间的对应关系 * name:请求的action的名称,在同一个包中要唯一 * class:action所在类的完整路径 --> <action name="helloWorldAction" class="com.yxkong.test.HelloWorldAction"> <!-- public String execute() throws Exception { System.out.println("HelloWorldAction execute"); return "success"; } result:返回的结果: * name:对应的action中execute方法的值 * 文本内容:转向的路径. --> <result name="success">/test/success.jsp</result> </action> <!-- * 如果没有为action指定class,则执行默认的class[com.opensymphony.xwork2.ActionSupport] public class ActionSupport implements Action * 如果没有为action执行执行的方法,则默认执行execute方法 public String execute() throws Exception { return SUCCESS; } * 如果没有为result的name属性执行值,则默认的值为"success" --> <action name="actionNoClass"> <result >/test/success.jsp</result> </action> </package> </struts>
这样发布web程序就能简单的实现一个struts2程序
文章评论