内容简介: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:
其中
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框架基础篇》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。