1、struts.xml文件
struts.xml需要存放在WEB-INF/classes下,模板如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> </struts>
Struts.xml是 Struts 2 的核心配置文件,主要用于配置开发人员编写的action。
2、web.xml文件
在Struts 2中,Struts框架是通过Filter启动的,他在web.xml中的配置如下:
<!-- 配置Struts2 核心 Filter --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件
struts.xml完成初始化操作。
注意:struts 2 读取到 struts.xml的内容后,以javabean形式存放在内存中,以后Struts 2对用户
的每一次请求处理将使用内存中的数据。
Filter 过滤器是用户请求和处理程序之间的一层处理程序。它可以对用户请求和处理程序响应的类容进行处理,通常用于权限、编码
转换等场合。
3、ActionSupport 类
ActionSupport 类为 Action 提供了一些默认实现,主要包括预定义常量、从资源文件中取文本资源、接收验证错误信息和验证的默认实现。
Struts 2 数据验证及验证框架的应用:
1、数据校验
Action 继承了 ActionSupport 类 ,而该类实现了 Action 、Validateable 、 ValidationAware 、TextProvider、LocaleProvider
Serializable 接口。
在Validateable 接口定义了一个 validate() 方法 , 在用户自定义 Action 类中重写该方法就可以实现 验证功能。
public class LoginAction extends ActionSupport { private String username ; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public String execute() throws Exception { // TODO Auto-generated method stub if ( ! username.equals("HelloWorld")) { Map request = (Map) ActionContext.getContext().get("request") ; request.put("name", getUsername()) ; return SUCCESS; } else return ERROR ; } public void validate() { //如果名字为空,则把错误信息天骄的Action类的fileError if (this.getUsername() == null || this.getUsername().trim().equals("")) { addFieldError("username" , "名字不能为空") ; } } }
在类中定义了校验方法后,该方法会执行系统的 execute() 方法之前执行。如果执行该方法后,Action类的fieldError中已经包含了数据校验错误信息,
将把请求转发到input逻辑视图处,所以在 Action配置中也要配置一下。
<action name = "LoginAction" class = "com.cnblogs.jbelial.login.LoginAction" > <!-- 定义3个逻辑视图和物理资源之间的映射 --> <result name = "input">/login.jsp</result> <result name = "error">/error.jsp</result> <result name = "success">/main.jsp</result> </action>
注意:
result中的name属性有下:
1、success : 表示请求处理成功,该值也是默认值。
2、error :表示请求处理失败。
3、none :表示请求处理完成后不跳转到任何页面。
4、input :表示输入时如果验证失败应该跳转到什么地方。
5、login :表示登录失败后跳转的目标。