Struts2(一)

一、什么是Struts2?

Struts是一个基于MVC设计模式的Web层应用框架,本质上相当于一个servlet,在MVC中,struts作为控制器(Controller)来建立模型与视图的数据交互。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求。Struts2与Struts1相比有很大的变化,但相对于WebWork,变化很小。

二、常见的Web层框架

  • Struts2
  • Struts1
  • WebWork
  • SpringMVC

三、Struts的配置文件加载顺序

  • init_DefaultProperties()------加载default.properties
  • init_TraditionalXmlConfigurations()------加载struts-default.xml,struts-plugin.xml,struts.xml
  • init_LegacyStrutsProperties()------加载struts.properties
  • init_CustomConfigurationProviders()------加载配置提供类
  • init_FilterInitParameters() ------加载web.xml中过滤器初始化参数
  • init_AliasStandardObjects()------加载Bean对象

加载顺序

  • default.properties
  • struts-default.xml
  • struts-plugin.xml
  • struts.xml
  • struts.properties
  • web.xml
    • 注意:后配置的常量值会覆盖先配置的常量的值

四、Action的配置

1、package的相关配置

  • package标签称为包,这个包与java中包的概念不一致,包为了更好的管理action的配置
  • package标签的属性
    • name:包的名称,只有在一个项目中不重名即可。
    • extends:继承哪个包,通常值为struts-default
    • namespace:名称空间,与<action>标签中的name属性共同决定访问路径
      • ​​​​​​​名称空间有三种写法:
      • 代名称的名称空间:namespace=“/aaa”
      • 根名称空间:namespace=“/”
      • 默认名称空间:namespace=“”
    • abstract:抽象的,用于其他包的继承。

2、action的相关配置

  • name:与namespace共同决定访问路径
  • class:Action类的全路径
  • method:执行Action中的哪个方法的方法名,默认值excute
  • converter:用于设置类型转换器

3、常量配置

在Struts2的框架中,提供了非常多的常量:default.properties

  • struts.i18n.encoding=UTF-8        ------Struts中所有的post请求的中文乱码不用处理
  • struts.action.extension=action,,        ------Struts请求的默认扩展名。默认扩展名是.action或者什么都不写。

在Struts2中修改一些常量的值

  • 修改常量的值,可以有三个位置进行修正
    • struts.xml

  • strits.properties

  • web.xml

4、分模块开发的配置

include的配置

五、Action的写法

1、Action类是POJO的类

/**
 * Action类的编写方式:Action类是一个POJO类
 * @author dell
 *
 */
public class ActionDemo1 {

	public String execute() {
		System.out.println("Acrion类执行了......");
		return null;
	}
	
}

2、Action类实现一个Action接口

/**
 * Action编写方式二:实现一个Action接口
 * *实现接口的这种方式:提供了五个常量(五个逻辑视图的名称)
 * 		*SUCCESS:成功
 * 		*LOGIN:登陆出错页面跳转
 * 		*ERROR:失败
 * 		*NONE:不跳转
 * 		*INPUT:表单校验的时候出错
 * @author dell
 *
 */
public class ActionDemo2 implements Action{

	@Override
	public String execute() throws Exception {
		System.out.println("ActionDemo2执行了......");
		return null;
	}

}

3、Action类继承ActionSupport类

/**
 * Action类的编写方式:继承ActionSupport类
 * *推荐使用继承ActionSupport方式:
 * 		*ActionSupport提供了数据校验、国际化等一系列操作的方法
 * @author dell
 *
 */
public class ActionDemo3 extends ActionSupport{

	@Override
	public String execute() throws Exception {
		System.out.println("ActionDemo3执行了......");
		return NONE;
	}
	
}

六、Action的访问

1、通过method方法

<h3>通过method方法</h3>
<a href="${pageContext.request.contextPath}/UserFind.action">查询用户</a><br/>
<a href="${pageContext.request.contextPath}/UserUpdate.action">修改用户</a><br/>
<a href="${pageContext.request.contextPath}/UserDelete.action">删除用户</a><br/>
<a href="${pageContext.request.contextPath}/UserSave.action">保存用户</a><br/>
<!-- method访问 -->
<action name="UserFind" class="com.it.struts.demo2.UserAction" method="find"></action>
<action name="UserUpdate" class="com.it.struts.demo2.UserAction" method="update"></action>  
<action name="UserDelete" class="com.it.struts.demo2.UserAction" method="delete"></action>  
<action name="UserSave" class="com.it.struts.demo2.UserAction" method="save"></action>

2、通过通配符的方法(****)

<h3>通过通配符的方法</h3>
<a href="${pageContext.request.contextPath}/Product_find.action">查询商品</a><br/>
<a href="${pageContext.request.contextPath}/Product_update.action">修改商品</a><br/>
<a href="${pageContext.request.contextPath}/Product_delete.action">删除商品</a><br/>
<a href="${pageContext.request.contextPath}/Product_save.action">保存商品</a><br/>
<!-- 通配符的方式 -->
<action name="Product_*" class="com.it.struts.demo2.ProductAction" method="{1}"></action>

3、动态方法访问

<h3>动态方式访问</h3>
<a href="${pageContext.request.contextPath}/customer!find.action">查询客户</a><br/>
<a href="${pageContext.request.contextPath}/customer!update.action">修改客户</a><br/>
<a href="${pageContext.request.contextPath}/customer!delete.action">删除客户</a><br/>
<a href="${pageContext.request.contextPath}/customer!save.action">保存客户</a><br/>
<!-- 动态方法访问 -->
<action name="customer" class="com.it.struts.demo2.CustomerAction"></action> 
<!-- 开启动态方法访问 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值