Struts2 是一个基于MVC设计模式的Web应用框架
它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
下载
http://struts.apache.org/download.cgi#struts209
配置
导入Struts2所需jar包
解压下载的压缩包 在apps文件夹下有个struts2-blank.war包 将里面的jar包 到WEB-INF/lib目录下
配置web.xml文件
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
配置struts.xml文件
package 标签
name 标签 随便写 只要不重复 可以进行模块化区分
namespace 命名空间 (访问Action网址前的一个网址部分)
extends 继承一个包 struts-default 默认配置 默认提供的功能
action 标签
name 是这个类的访问的路径
class 类的全限定类名
method 类方法被访问的方法
result 标签
name 方法的返回值 进行匹配
type 请求跳转的方式 默认是 请求转发 dispatcher
值部分: 跳转网站资源
常量配置修改
<!-- 常量配置修改 -->
<!-- /org/apache/struts2/default.properties -->
<!-- default.properties 文件中找到需要修改的配置 -->
<!-- name: 键 value: 值 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- action,,表示访问路径的后缀名,可以是.action 获取无后缀 -->
<constant name="struts.action.extension" value="action,,"></constant>
<!-- 为配置文件提供热加载(更改完后不用重启服务器) -->
<constant name="struts.devMode" value="true"></constant>
<!-- 动态方法(不常用) -->
<!-- struts.enable.DynamicMethodInvocation=false -->
<!-- 默认 动态方法时关闭的 -->
<!-- 使用 !方法名 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
创建jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello World!
</body>
</html>
Struts2 工作原理
Action类创建方式
方式一
/*
* Action类 创建方式一
* 随便一个普通类都可以作为一个Action
* 只需要你去配置struts.xml文件
* 相比于servlet 减少代码的侵入性
*
*/
public class actionDemo {
}
方式二
import com.opensymphony.xwork2.Action;
/*
* 方式二Aciton
* 实现 Action接口
* 意义在于 可以提醒 Action类中的方法该如何写
*/
public class actionDemo implements Action{
@Override
public String execute() throws Exception {
return null;
}
}
方式三
import com.opensymphony.xwork2.ActionSupport;
/*
* 常用创建Action方式
* 该类实现了多个接口 一个接口就有一个功能
* Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable
*/
public class Demo05Action extends ActionSupport{
}
Action默认值
public class DemoAction {
public String execute() {
System.out.println("测试action 标签的 默认值");
return "success";
}
}
<?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>
<!--
默认使用的类 ActionSupport类
(如果你这个找不到 就去struts-default文件下 找默认的类
默认执行的方法 execute()
默认接收返回值 "success"
默认的跳转方式 请求转发
-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="test" namespace="/test" extends="struts-default">
<action name="DemoAction" >
<result>/hello.jsp</result>
</action>
</package>
</struts>