Struts2 的入门
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互
常见的web层框架:
Struts2、 Struts1、 Webwork、SpringMVC
Web层框架基于前端控制器模型设计
下载Struts2的开发环境
struts2下载网址:http://struts.apache.org/
解压Struts2开发包
1、 创建web项目,引入jar包
引入jar包
2、创建一个JSP页面
<h1>struts2的入门</h1>
<h3><a href="${pageContext.request.contextPath}/hello.action ">struts2的入门</a></h3>
3、编写Action的类
public class HelloAction {
/*
* 提供一个方法
* 方法签名是固定的
* public 返回 值是String类型 方法名execute,在此方法中不能传递参数
* **/
public String execute() {
System.out.println("HelloAction执行了");
return null;
}
}
4、对Action进行配置
在src下创建(提供)名称叫做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>
<!--struts2为了管理Action的配置,通过包进行管理 -->
<!--配置struts2的包 -->
<package name="随便写" extends="struts-default" namespace="/">
<!--配置Action -->
<action name="hello" class="demo1.HelloAction">
</action>
</package>
</struts>
5、 配置前端控制器(核心过滤器)
在web.xml文件中配置
<!-- 配置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>
6、改写Action中的方法的返回值
public class HelloAction {
/*
* 提供一个方法
* 方法签名是固定的
* public 返回 值是String类型 方法名execute,在此方法中不能传递参数
* **/
public String execute() {
System.out.println(“HelloAction执行了”);
return “success”;
}
}
7、改写struts.xml
8、编写success.jsp
Struts2的执行流程:
当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转
XML的提示问题
与hibernate相同
Struts2的配置文件加载顺序
- default.properties
- struts-default.xml
- struts-plugin.xml
- struts.xml
- struts.properties
- web.xml
注意:后配置的常量的值会覆盖先配置的常量的值
Action的配置
package相关配置
package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置
package的属性 | 说明 |
---|---|
name | 包的名称,只有在一个项目中不重名即可 |
extends | 继承哪个包,通常值为struts-default |
namespace | 名称空间,与标签中的name属性共同决定访问路径。名称空间有三种写法:1、带名称的名称空间 :namespace=”/aaa” 2、跟名称空间:namespance=”/”3、默认名称空间:namespace=”” |
abstract | 抽象的,用于其他包的继承 |
action相关配置
action标签配置Action类
action标签的属性:
- name :与namespace共同决定访问路径
- class :Action类的全路径
- method :执行Action中的哪个方法的方法名,默认值execute
- converter :用于设置类型转换器
Struts2的常量配置
在Struts2的框架中,提供了非常多的常量:(在default.properties)
- struts.i18n.encoding=UTF-8 ----Struts2中所有的post请求的中文乱码不用处理。
- struts.action.extension=action, ----Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写
在Struts2中修改一些常量的值:
- struts.xml中进行修改
<!-- 常量的配置 -->
<constant name="struts.action.extension" value="action"></constant>
-
struts.properties中进行修改
-
struts.action.extension=action
-
web.xml中进行修改
<!-- 配置struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 修改常量 -->
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>action</param-value>
</init-param>
</filter>
include的配置
<!-- include的配置 -->
<include file="struts/demo1/struts_demo1.xml"></include>
Action的写法
- Action类是POJO的类
/*
* Action类是POJO的类
* **/
public class ActionDemo1 {
public String execute() {
System.out.println("ActionDemo1执行了");
return null;
}
}
- Action类实现一个Action的接口
- Action类继承ActionSupport类
Action的访问
-
通过method设置
-
通过通配符的方式进行配置(*****)
-
动态方法访问