什么是Strut2
1、Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型
由传统Struts1和WebWork两个经典框架发展而来
2、Strust2 核心功能
(1)允许POJO(Plain Old Java Objects)对象 作为Action
(2)Action的execute 方法不再与Servlet API耦合,更易测试
(3)支持更多视图技术(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的拦截器机制,更易扩展
(5)更强大、更易用输入校验功能
(6)OGNL表达式语言、堆栈
3、什么是MVC
MVC:是一种思想,是一种模式,将软件分为 Model模型、View视图、Controller控制器
struts1 、webwork 、jsf 、SpringMVC 都是MVC
4.Strut1和Strut2什么关系
没有关系,Struts2 全新框架,引入WebWork很多技术和思想,Struts2 保留Struts1 类似开发流程
4、Struts2 内核 webwork
Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Navigation Language),IoC(Inversion of Control反转控制)容器等
marven项目使用Struts2
1、添加核心包
新建一个webapp的marven项目,在pom.xml中添加以下Strut2的核心依赖即可,其他依赖包也会导入进来
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.8</version>
</dependency>
2、添加struts2的配置文件
在web.xml中添加过strut2的滤器来使用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>
在marven项目的resources目录下新建一个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>
<!-- 所有匹配*.action的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action" />
<!-- 是否启用开发模式 -->
<constant name="struts.devMode" value="true" />
<!-- struts配置文件改动后,是否重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 让struts2支持动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value="true" />
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />
<package name="basePackage" extends="struts-default">
<action name="first" class="action.HelloAction" method="test">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
配置文件中给出了处理类的类名(action.HelloAction)和处理的方法(test),以及响应时需要的如何处理(/index.jsp)
意思是一个first的处理器调用的是类HelloAction的test方法,返回success时,跳转到index.jsp页面
method=”test”如果不配置的话,默认调用类的execute方法,没有的话就报错
3、处理类
/**
*
*/
package action;
/**
* @author Administrator
*
*/
public class HelloAction {
public String test() throws Exception{
System.out.println("这是一第一个action的测试方法");
return "success";
}
public String execute() throws Exception{
System.out.println("这是一第一个action的默认方法");
return "success";
}
}
4、返回页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<body>
<h2>Hello Strut2</h2>
</body>
</html>
请求处理器的后缀默认为.action,需要修改的话
方法1:在strut2.xml中配置
<!-- 所有匹配*.action的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action,jsp,...." />
方法2:在struts.properties 文件中加入一行配置信息:
struts.action.extension=action,jsp
方法3:在web.xml中添加init-param
<filter>
<filter-name>struts2</filter-name>
<filter-class> org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>json</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name> <url-pattern>*.json</url-pattern>
</filter-mapping>
5、浏览器测试
闲言碎语
这只是一个简单介绍struts2和简单使用的一个小例子,接下来我们就来仔细的研究研究strut2的功能和使用。