我是靠谱客的博主 丰富蜗牛,最近开发中收集的这篇文章主要介绍struts2拦截器的简单总结(3),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

action与servlet API

action与servlet API是完全松耦合的,action类中可以方便进行测试 可以通过ActionContext类来访问servlet API,常用的方法有put,get,getApplication() 等

ActionContext.getContext().put("name", "caokaiqiang");
		//通过session来放值
		ActionContext.getContext().getSession().put("name1", "kevin");

ActionContext.getContext().getApplication().put("name","tom");
这样 便可以在jsp页面中进行访问,${sessionScope.name}

可以通过实现接口 来访问servlet  比如ServletContextAware来访问servlet 

public class action extends ActionSupport implements ServletContextAware {
/**
	 * 
	 */
	private ServletContext context;
public void setServletContext(ServletContext arg0) {
	// TODO Auto-generated method stub
	this.context = arg0;
	this.context.setAttribute("user", "jim");
}
实现相应的方法即可 同样也可以通过其他接口来进行访问 例如httpServletResponse方法httpServletRequest方法等

struts2的标签库 OGNL语言的使用 可以简洁方便的访问后台数据 如#session['user']

添加头元素

 <%@taglib prefix="s" uri="/struts-tags" %>
uri表示struts2标签库的URI  prefix表示该标签库的前缀 对于所有的struts2标签库的使用都需要以s为前缀 当struts2框架发现某个标签是s前缀的 就认定是struts2标签

访问address属性

<s:property value = "#address"/>
if else标签

<s:if test="'A' in {'C','B'}">
A
</s:if>
<s:elseif test = "'A' in {'A','B'}">
B</s:elseif>
<s:else>
C
</s:else>
append标签

<s:append var = "newList">
<s:param value = "{'HTML','Java'}"></s:param>
<s:param value = "{'swift','OC'}"></s:param>

</s:append>
interator标签 用于进行循环遍历输出

<s:iterator value = "%{#newList}" id = "lst">

<s:property value = "lst"/>
</s:iterator>

merge标签
<pre name="code" class="java"><s:merge var = "mer">
<s:param value = "{'HTML','Java'}"></s:param>
<s:param value = "{'swift','OC'}"></s:param>

</s:merge>

 
相当于checkbox
<!-- 对集合进行操作 创建了两个集合 随后默认china为默认值 -->
<s:select list="{'america','china'}" label = "Country" name = "country" value = "%{'china'}"></s:select>
<!-- 创建一个map对象 -->
<s:select list="#{'0':'female','1':'male'}" label = "sex"  name = "sex"></s:select>
struts2的数据标签

a 标签 表示一个超链接 

action 标签 表示动用struts.xml中哪个acion

<s:a action="actionBiaoqian">ccc</s:a>
<s:bean标签用于加载javabean param标签可以初始化参数值 

<s:bean var = "user" name = "com.biaoqian.test.User">
<s:param name = "name" value = "tom"></s:param>
<s:param name = "age" value = "20"></s:param>
<s:if test="#user.age > 0">
<s:property value = "#user.name"/>
</s:if>
</s:bean>
个人认为最重要的还是表单元素

<s:form action = "action" namespace="/user">
<s:textfield label="name" name="username"></s:textfield>
<s:textfield label = "password" name = "password"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
指定fom表单的action和 textfield中的关联类和 label值等
接下来最重要的就是strut2的拦截器部分了,是AOP思想的一种实现 可以吧大问题 分解为小问题 分别给不同的拦截器进行调用即可,拦截器在一起 还可以组成一个拦截器链,这些拦截器链会按照指定的顺序进行调用 

struts2的默认拦截器 

alias拦截器 作用是给参数起一个别名,让不同的action共享同一个参数值 实现了action之间的传值 只要在action下面加一个param元素 随后该元素name属性命名为aliases即可

     <action name = "firstAction" class = "com.kevinswift.action.FirstAction">
  <!-- 指定action结果类型为chain -->
<result type = "chain">secondAction</result>
  </action>
  <action name = "secondAction" class = "com.kevinswift.action.SecondAction">
  <result>success.jsp</result>
  <!-- 分别要传的值 -->
  <param name = "aliases">#{'firfirstCountry':'secondCountry'}</param>
  </action>
两个类中进行打印和输出firstCountry和secondCountry

package com.kevinswift.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;

public class FirstAction extends ActionSupport implements Preparable{
//分装请求参数 firstCountry
	private String firstCountry;
	public String getFirstCountry() {
		return firstCountry;
	}

	public void setFirstCountry(String firstCountry) {
		this.firstCountry = firstCountry;
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		System.out.print("firstAction" + firstCountry);
		return SUCCESS;
	}

	@Override
	public void prepare() throws Exception {
		// TODO Auto-generated method stub
		System.out.println(firstCountry);
	}

}

package com.kevinswift.action;

import com.opensymphony.xwork2.ActionSupport;

public class SecondAction extends ActionSupport {
private String secondCountry;
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		System.out.println("secondAciton" + secondCountry);
		return SUCCESS;
	}

	public String getSecondCountry() {
		return secondCountry;
	}

	public void setSecondCountry(String secondCountry) {
		this.secondCountry = secondCountry;
	}

}
定义一个表单元素进行提交即可

其他两个系统拦截器个人认为不是非常的常用






最后

以上就是丰富蜗牛为你收集整理的struts2拦截器的简单总结(3)的全部内容,希望文章能够帮你解决struts2拦截器的简单总结(3)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部