struts1 和 struts2是完全不同的两种设计思想
Struts1是以ActionServlet作为核心控制器
而struts2是以FilterDispatcher作为核心控制器
struts2是基于MVC设计模式的Web应用框架 在mvc模式中可以替代servlet的角色
执行流程
1.通过网址请求
/hello/HelloAction
2.找对应 命名空间(网址)
3. 找到后 再通过网址的HelloAction去匹配
Action标签中的 name
4.匹配上 用class 标签 创建其类的对象
5.调用该类的方法
6.拿到类中方法的返回值 去匹配 reslut 标签
7.返回值匹配上 调用 标签中的 页面
常量配置修改
可以去default.properties文件 找到你要修改的配置
修改字符集
struts.i18n.encoding=UTF-8
表示 访问路径的后缀名 可以是.action 或者无后缀
struts.action.extension=action,,
可以给你的配置文件提供热加载(更改完了不用重启你的服务器)
struts.devMode = false
struts2的xml文件配置中的标签
struts 根标签
package
name标签 只要不重复即可 可以进行模块化区分
namespace标签 命名空间(访问Action网址前的一个网址部分)
extends标签 继承一个包 struts-default 默认配置 默认提供的功能
action
name标签 是你访问的路径
class标签 类的全限定类名
method标签 类中被访问的方法
result
name标签 方法的返回值(匹配)
type 请求跳转的方法 默认是 请求转发dispatcher
值部分 跳转网站资源
Action类 创建方式1
随便一个普通类 都可以作为Action类
只需要你去配置struts.xml文件
相比于servlet 减少代码的侵入性
<struts>
<package name="***" namespace="***" extends="struts-default">
<action name="***" class="***">
<result name="***" type="***">值部分</result>
</action>
</package>
</struts>
实现Action方式2
实现 Action接口
意义在于 可以提醒你 Action类中的方式 该怎么写
public class DemoAction implements Action{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return null;
}
}
常用创建Action类 方式
因为该类实现了 很多接口 一个接口就有一个功能
例如: Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable
public class DemoAction extends ActionSupport{
}
Action 标签的默认值
类中代码
public class Demo06Action {
public String execute() {
System.out.println("测试 Action 标签的默认值");
return "success";
}
}
默认使用的类 ActionSupport类
(如果你这个类找不到 就去struts-default文件下 找默认的类)
默认执行的方法 execute()
默认接收返回值 “success”
默认的跳转方式 请求转发
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>
<package name="test" namespace="/test"
extends="struts-default">
<action name="Demo06Action_*" class="com.lanou3g.test.Demo06Action" method="{1}">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>
xml中的配置写成这样同样可以获取
<package name="test" namespace="/test" extends="struts-default">
<action name="Demo06Action">
<result>/hello.jsp</result>
</action>
</package>