struts2(7)
----拦截器
----token
<package name="struts2" extends="struts-default">
struts2这个web框架的核心控制器是由一组拦截器加上过滤器共同构成
struts2这个框架的所有功能都是由这些拦截器与过滤器来提供,如果不加载它们,struts2就没有任何功能
这些拦截器与过滤器默认的都在struts-default这个包中,只有让自己的package继承于struts-default这个包,这些拦截器与过滤器才能加载,struts2这个框架才会有功能
------------------------------------------------------------------------
在struts2一般给系统附加功能的时候,都会选择通过自定义拦截器来实现
interceptor -------拦截器
filter-------------过滤器
------------------------------通过拦截器实现权限控制
基本步骤:
1、用户登录时,根据用户名与密码,查询数据库,返回一个Inf对象,根据Inf对象是否为null,判断用户登录成功还是失败(id,name,pwd,roleId)
2、如果用户登录成功,把Inf对象存到session中
3、编写拦截器实现权限控制:
A、编写一个类继承于一个抽象类 AbstractInterceptor
B、在interceptor方法,首先得到session作用域
C、从session中,取user对象,如果等于null,表示用户没有登录,否则就是登录用户
D、判断Inf对象是否为null,判断出用户是否登录,如果没有登录,向request中存储一条错误信息,并且返回到指定页面
E、如果用户不为null,调用return ivk.invoke();
4、在struts.xml文件中配置拦截器
1、在<Action>标签之前配置拦截器
<interceptors>
<interceptor name="role" class="org.java.util.RoleInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="role"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
myStack是一个拦截器的栈,这里面包含了一组系统必须拦截器与自定义的拦截器
2、在action标签中,引用拦截器
<action name="test" class="org.java.web.OpAction">
<interceptor-ref name="myStack"/>
<result name="ok">/yes.jsp</result>
<result name="show">/show.jsp</result>
</action>
static关键字,可以修饰方法与属性:
修饰属性:表示是一个静态属性,特点:不管类被实例化多少次,静态属性都中会被初始化一次
修改方法:表示方法是一个静态方法,也称为:“类方法”,不需要实例化就可以直接访问
public class MyClass{
public static String name="jack";
public static void show(){
}
}
-------------------------------------------------------------
public class 其他类{
public void 方法(){
String val = MyClass.name;
MyClass.show();
}
}
一个类中最优先的"方法",是构造方法,它会在实例化的时候调用
一个类中最优先的"代码",是静态块,它会比构造方法还要优先
static{
代码;
}
静态块,没有名称,所以,用户无法调用,只要类被访问,如果存在静态块,系统将会优先调用