Struts2的一些理解

一.struts.xml的基本配置
第一步:在web.xml中配置struts2过滤器
 
<filter>
	<filter-name>struts2Filter</filter-name>
	<filter-class>
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	</filter-class>
</filter>

<filter-mapping>
	<filter-name>struts2Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
第二步:struts.xml文件配置
2.1 package配置

1.name属性:定义一个包的名称,它必须是唯一的

2.namespace属性:主要是与action标签的name属性联合使用来确定一个action的访问路径

3.extends属性:指定继承自那个包.一般值是 struts-default 另外json-default也比较常用

4.abstruct属性:它代表当前包是一个抽象的,主要用于被继承

<package name="default" namespace="/" extends="struts-default">
</package>
2.2  action配置

1.name属性:主要是用于package的namespace联合使用来确定一个action的访问路径

2.class属性:用于指示当前的action类

3.method属性:用来指示当前action类中的那个方法执行

<action name="struts2" class="cn.itheima.web.action.Struts2Action"></action>
2.3 result配置

他主要用于指示视图结果

1.name属性:作用与action类的method方法的分返回值进行匹配,来确定跳转路径

2.type属性:作用是用于指定跳转方式

<action name="login" class="cn.itheima.web.action.LoginAction"  method="login">
  <result name="success" type="redirect">/success.jsp</result>
  <result name="failer">/failer.jsp</result>
</action>
二. Action类的创建(共有三种方式,只谈两种)
1. 创建一个类实现一个Action接口(com.opensymphony.xwork2.Action)


在Action接口中,定义了五个常量,一个execute方法

五个常量:它们默认的五个结果视图<result name="">

ERROR:错误视图

INPUT:它是strust2框架中intercept中发现问题后会访问的一个视图

LOGIN:它是一个登陆视图,可以在权限操作中使用

NONE:它代表的是一个null,什么都不做(也不会做跳转操作)

SUCCESS:这是一个成功视图

优点:耦合度低  缺点:还需自己来完成功能

2. 创建一个类继承ActionSupport类(com.opensymphony.xwork2.ActionSupport)

ActionSupport类也实现了Action接口,一般在开发中会使用这种方案

优点:具有丰富的功能,例如  表单校验 错误信息设置  国际化

缺点:耦合度高

三. Struts 2框架封装数据

主要解决的问题:是在action中如何获取请求参数

主要有两种方式:

 1.属性驱动
a.直接在action类中提供与请求参数匹配的属性,并且提供get/set方法.
private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
b.在action类中创建一个javaBean,对其提供get/set方法.
 private User user;


	public User getUser() {
		return user;
	}


	public void setUser(User user) {
		this.user = user;
	}
在请求时页面上要进行修改
 例如:user.username,user.password,要使用ognl表达式
<form action="${pageContext.request.contextPath}/login1" method="post">
        username:<input type="text" name="user.username"><br>
	password:<input type="password" name="user.password"><br>
	<input type="submit" value="LOGIN">
	</form>

以上两种方式的优缺点:

 第一种比较简单,在实际操作我们需要将action的属性在赋值给模型(javaBean) 去操作
        第二种:不需要在直接将值给javaBean过程,因为直接将数据封装到了javaBean中。
它要求在页面上必须使用ognl表达式,就存在页面不通用问题

2.模型驱动
步骤:
 1.让Action类要实现一个指定接口ModelDriven
2.实例化模型对象(就是要new 出来javaBean)
3.重写getModel方法将其实例化的模型返回

对于模型驱动它与属性驱动对比,在实际开发中使用比较多,
模型驱动的缺点,它只能对一个一个模型数据进行封装

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值