Struts的简单应用

来源:互联网 发布:长沙学历网络教育报考 编辑:程序博客网 时间:2024/05/18 06:05

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 :表示登录失败后跳转的目标。

1 0
原创粉丝点击