菜鸟升级---struts2学习第五天--关于struts2的拦截器和struts2的标签库

struts2拦截器

拦截器Interceptor和过滤Filter的区别

过滤器过滤的是请求方面的东西,范围比较广泛,比较粗糙,拦截器主要管action的跳转和访问,更加注重细节。

拦截器的自定义以用户登陆为例

1,创建一个类继承extends类AbstractInterceptor或者继承Implements接口Interceptor

继承MethodFilterInterceptor类
实现doIntercept方法返回值是一个ActionInvocation
public class interceptorDemo1  extends MethodFilterInterceptor{
protected String doIntercept(ActionInvocation invocation) throw Extecption{
判断session中是否存在数据

1,获得数据

User existUser=(User)ServletActionContect.getRequset().getSession().getAtrribute("existUser");

2,判断session中用户信息是否为空

if(existUser==null){
        没有登陆
            给出提示信息回到登陆页面
                获得正在执行的Action

ActionSupport action=invocation.getAction();
执行addActionError方法在jsp页面显示信息
action.addActionError(“没有登陆,没有访问权限”);
return action.LOGIN;
}
else{
已经登陆
return invocation.invoke();放行
}
return null;
}
}

3配置xml

在package中添加拦截器或者拦截器栈
添加拦截器
interceptors>
interceptor name=”拦截器的名字” class=”路径.路径”> /interceptor>
有几个配几个
/interceptors>
添加拦截器栈,struts2如果自定义拦截器就不会执行默认的拦截器了,所以就需要手动添加
interceptor-stack name=”栈名”>
interceptor name=”拦截器名” class=”路径”/>
struts2的默认拦截器interceptor name=”defaultStack”/>
/interceptor-stack>

4在Action中配置拦截器或拦截器栈

引入拦截器:
package>
action>
interceptor-ref name=”拦截器的名字”>
interceptor-ref name=”defaultStack”>
引入拦截器栈:
package>
action>
interceptor-ref name=”拦截器栈的名字”>

4在Action中配置那些方法不被拦截

<interceptor-ref name="拦截器名">
    <param name="excludeMethods">方法名逗号隔开可以写多个方法</param>
</interceptor>

struts2的标签库

常用标签

if,property,date,debug

UI标签

用UI标签方便数据回显

form表单

在jsp页面的form1表单中的target属性值可以改变页面跳转的方式

默认是_self在自己页面打开
_ blank新弹出一个新窗口,
_parent在父窗口打开

textfield文本框

radio单选框

checkboxlist复选框

select下拉列表

textarea文本域

hidden隐藏值

submit提交按钮

s:form action=”” method=”” theme=”别卵用这个”>
s:textfield name=”name” lable=”文本框在jsp页面显示的名字”/>
s:textfield name=”password” lable=”密码”/>
s:radio list=”{‘男’,’女’}” name=”sex” label=”性别”/>
s:select list=”{‘北京’,’上海’,’韩国’}” lable=”city” lable=”籍贯” headerKey=”” headerValue=”-请选择”/>
s:checkboxlist list=”#{‘basketball’:’篮球’,’football’:’足球’,’volleyball’:’排球’}” name=”hobby” lable=”爱好”/>
s:textarea name=”info” cols=”6” rows=”3” label=”介绍” value=”文本域的值存放位置”>/textarea>文本域
s:hidden name=”id” value=”隐藏区域的值”/>
s:submit name=”” value=”提交”/>
/s:form>

小碎的struts2 知识点

可以用action类实现接口ModelDriven来完成从jsp页面接收数据

ActionSupport里面有很多方法ActionError: this.addActionError(“用户名或者密码错误”);事例是表示当用户登陆信息错误时回显在jsp页面的信息
FieldError:输入类型错误
ActionMessage:

一般放用户登陆成功需要跳转时result的type需要设置为redirect重定向类型

猜你喜欢

转载自blog.csdn.net/qq_42799000/article/details/81273587