Struts2框架基础篇

栏目: Struts · 发布时间: 7年前

内容简介:Struts2框架基础篇

首先,要了解Struts2框架中参数传递的大体流程:

服务器端的Web容器收到用户的请求(URL)——Struts2的核心控制器FilterDispatcher接受用户发起的请求,然后判断这个请求是交给action还是交给web组件来处理;如果请求的action或web组件不存在,就会报错404。在整个处理过程中,需要一个辅助对象: ActionMapper ,它会确定调用哪个Action——相应的action会根据struts.xml的配置信息(首先执行拦截此action的所有拦截器,然后再执行请求的action对象;在这个处理过程中需要辅助对象:Action代理类ActionProxy)配置管理器(ConfigurationManager)——Action执行完毕之后,返回一个结果(此结果用字符串来表示),这个结果经过拦截Action的所有拦截器之后,返回给主控制器。主控制器根据此结果从配置文件中找到真正的路径,然后将请求转发给相应的视图。视图根据持久层作出相应的反应。整个参数传递的流程就结束了。

其次,导入Struts所需的jar文件。

Struts2要使用一些jar包文件,开发业务需求不一样,所需的包配置也不一样,以下这些包是最基本的,(一般情况下这些包也够用了),所需包的放置位置是\WebRoot\WEB-INF\lib:

Struts2框架基础篇

其中

struts-core-2.jar 是Struts 2 框架的核心类库

xwork-core.jar 是XWork类库,Struts 2 在其上构建

ognl.jar 是 Object Graph Navigation Language , Struts 2 框架通过其读写对象的属性。

freemarker.jar 是Struts 2 的UI标签的模版使用 Freemarker编写。

commons-logging.jar 是ASF出品的日志包。

commons-fileupload.jar 是文件上传组件。

导包完成后要创建Struts.xml,这是Struts 2 的核心配置文件,主要用于配置开发人员编写的action。

该配置文件通常放在src下,下面通过一个Struts.xml文件,详细分析一下这个核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<!-- package:包.structs2使用package来组织 name 属性:用于其他的包应用当前的包(必填属性) extends:当前包继承哪个包,继承的,即可用继承其中的所有的配置,通常情况下继承struts-default 
		struts-default这个包在struts-default.xml文件中定义 namespace 属性是可选的,如果它没给出,则以“/”为默认值.若namespace有一个默认值,则要想调用这个包里的Action 
		就必须把这个属性所定义的命名空间添加到有关的UR字符串中 -->
	<package name="helloworld" extends="struts-default">

		<!-- 配置一个action:一个struts2的请求就是一个action name:对应一个struts2的请求的名字,不包含扩展名 class:com.opensymphony.xwork2.ActionSupport 
			method 默认值:execute -->

		<action name="product-input" class="com.opensymphony.xwork2.ActionSupport"
			method="execute">
			<!-- result:结果.表示action方法执行后可能返回一个结果,所以一个action节点可能会有多个result子节点. 多个result子节点使用name属性区分 
				name:表示一个result 和action方法的返回值对应 默认值为success type:表示结果类型,默认值为dispatcher(转发到结果) -->
			<result name="success" type="dispatcher">/WEB-INF/pages/xxx.jsp</result>
		</action>

		<!-- class = "xxxx" 对应请求的包名加类名 -->
		<action name="product-save" class="xxxx" method="save">
			<result name="detais">/WEB-INF/pages/xxxx.jsp</result>
		</action>
	</package>
</struts>

在Struts 2中,Struts框架是通过Filter启动,在web.xml中必须有相应的配置:

<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>

struts 2 在读取到 struts.xml的内容后,以javabean形式存放在内存中,以后Struts 2对每一次请求处理将使用内存中的数据。

Struts2提供了大量的数据校验器,有两种方法进行数据的校验:

1, 编码方式校验:

Action继承自ActionSupport,针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.这种方法不提倡,和主代码容易造成代码混乱而且不易重用,需要为每个需要的地方加校验。

2,XML配置的方法校验:

针对要校验的Action类,在同包下编写一个名为:Action类名-validation.xml校验规则文件,这种是比较常用的,

命名规则:ActionName-validation.xml,其中ActionName是Action类的名字;

输入校验失败后,和类型转换一样,会将错误封装成fieldError,并放入Action Context中,因此在JSP中添加<s:fielderror/>可显示错误,此内容也是我们在数据校验文件中配置的;

例如:必填校验器

对登录用户名进行非空验证:

<validators> 
        <!-- 需要验证的字段的字段名 -->  
    <field name = "username">
        <field-validators type = "required"> 
            <!-- 错误提示信息 -->
            <message>请输入用户名</message>
        </field-validators>
    </field>
</validators>

年龄合法性验证:

<validator type="int">  
        <param name="fieldName">age</param>  
        <param name="min">0</param>  
        <param name="max">150</param>  
        <message>年龄范围在0-150之间</message>  
 </validator>

日期验证(包括输入的是否 是date类型以及输入的日期是否合法)

<validators>
    <!-- 需要验证的字段的字段名 -->
    <field name = "date">
        <field-validators type = "date"> 
            <!-- 时间的最小值 -->
            <param name = "min">2000-01-01</param>
            <!-- 时间的最大值 -->
            <param name = "max">2017-05-04</param>
            <!-- 错误提示信息 -->
            <message>时间必须在2000-01-01至2017-05-04之间</message>
        </field-validators>
    </field>
</validators>

同时,struts2还提供了很多内置的校验器,可以直接使用:

1. required校验器

此校验器要求字段必须为非空;

2 .requiredstring校验器

此校验器要求检验字符串非空并且必须长度大于0,即不能是""

可选参数为:

(1)trim:如果为true,则将前后的空白去掉,类似于String的trim函数;

3. int校验器

此校验器要求整数限定在一定范围之内;

可选参数为:

(1)min:最小值;

(2)max:最大值;

4. date校验器

要求日期在一定范围之内;

可选参数:

(1)min:最小日期;

(2)max:最大日期;

5. fieldexpression校验器

要求此校验器满足指定的逻辑表达式;

可选参数:

(1)expression:逻辑表达式;格式为:<![CDATA[(逻辑表达式)]]>

6. email校验器

要求字段一定要满足电子邮箱格式;

7. url校验器

要求字段格式满足URL格式;

8. stringlength校验器

要求字段是string,并且长度在一定范围之内;

可选参数:

(1)trim:删除前后空白;

(2)minLength:最小长度;

(3)maxLength:最大长度;

9. regex校验器

要求满足给定的正则表达式;

可选参数:

(1)expression:给出正则表达式;格式如:<![CDATA[(正则表达式)]]>

(2)caseSensitive:是否区分大小写;

例如,当我们要验证邮箱时,不需要自己做验证,

<validators>
    <!-- 需要验证的字段的字段名 -->
    <field name = "email">
        <field-validators type = "email">  
            <!-- 错误提示信息 -->
            <message>邮箱地址无效</message>
        </field-validators>
    </field>
</validators>

以上所述就是小编给大家介绍的《Struts2框架基础篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Coding the Matrix

Coding the Matrix

Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00

An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具