一个类如果是拦截器,必须实现Interceptor接口。
public class PrivilegeInterceptor implements Interceptor{ public void destroy() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public String intercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub System.out.println(\ //得到当前正在访问的action System.out.println(invocation.getAction().toString()); //得到Ognl值栈 System.out.println(invocation.getInvocationContext().getValueStack()); //请求路径action的名称,包括方法 System.out.println(invocation.getProxy().getActionName()); //方法名称 System.out.println(invocation.getProxy().getMethod()); //命名空间 System.out.println(invocation.getProxy().getNamespace()); String method = invocation.invoke(); return null; } } 说明: 这个类中init、1、intercept和destroy三个方法说明了一个拦截器的生命周期。 2、 在interceptor方法中的参数invocation是执行action的上下文,可以从 这里得到正在访问的action、Ognl值栈、请求路径、方法名称、命名空间 等信息。以帮助程序员在拦截器中做相应的处理工作。 红色部分是关键部分,就是调用action的方法。这里可以成为目标类的 3、 目标方法。 4、因为这里配置的拦截器是针对包的,所以只要是包的action都起作用。
12 验证
12.1 需求
验证用户名不能为空,密码也不能为空,并且长度不能小于6位数。
12.2 实现
13 国际化
13.1 说明
一个系统的国际化就是根据操作系统的语言,页面上的表现形式发生相应的变化。比如如果操作系统是英文,页面的文字应该用英语,如果操作系统是中文,页面的语言应该是中文。
13.2 步骤 13.2.1 建立资源文件
资源文件的命名规则: 默认的命名为: 文件名前缀.properties 根据语言的命名为: 文件名前缀.语言种类.properties 例如: 中文: resource_zh_CN.properties 内容: item.username=用户名 item.password=密码 英文: resource_en_US.properties
内容: item.username=username_en item.password=password_en 默认: resource.properties 内容: item.username=username item.password=password
13.2.2 配置文件中
需要在配置文件中加入: value=\
1、 这样struts2就会去找你写的资源文件
2、 name的值可以在org/apache/struts2/default.properties中找到。 3、 如果放置的资源文件在src下,则value的值可以直接写,如果在
包中则可以写成包名.resource。
4、 在这里resource是个基名,也就是说可以加载以resource开头的文件。
name=\
13.2.3 页面中
利用
13.2.4 在action中
可以利用ActionSupport中的getText()方法获取资源文件的value值。 I18n/LoginAction public class LoginAction extends ActionSupport{ public String login(){ String username = this.getText(\ System.out.println(username); String password = this.getText(\ System.out.println(password); return \ } } 说明:通过this.getText()方法可以获取资源文件的值。
14 OGNL
14.1 介绍
OGNL表达式是(Object-Graph Navigation Language)是对象图形化导航语言。OGNL是一个开源的项目,struts2中默认使用OGNL表达式语言来显示数据。与serlvet
中的el表达式的作用是一样的。OGNL表达式有下面以下特点:
1、 支持对象方法调用,例如:objName.methodName(); 2、 支持类静态的方法调用和值访问,表达式的格式为
@[类全名(包括包路经)] @[方法名 | 值名] 例如:
@java.lang.String@format('foo%s','bar') @tutorial.MyConstant@APP_NAME;
3、 支持赋值操作和表达式串联,例如:
price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
4、 访问OGNL上下文(OGNL context)和ActionContext 5、 操作集合对象
14.2 回顾el表达式
在servlet中学习的el表达式实际上有两步操作:
1、 把需要表现出来的数据放入到相应的作用域中
(req,res,session,application)。
2、 利用el表达式把作用域的值表现在页面上
14.3 ognl类图
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库struts2(5)在线全文阅读。
相关推荐: