struts2验证框架小结
来源:互联网 发布:淘宝颁发勋章 编辑:程序博客网 时间:2024/06/08 19:29
最近使用了一下struts2的验证框架,感觉不错。但其中也发现了一些技巧和问题,先总结如下。
1、建立一个实体类,主要是对因为登陆而设置的这个验证框架,所以首先创建一个用户实体类
- import java.util.Date;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.Table;
- /*
- *
- * 用户
- *
- */
- @Entity
- @Table(name = "user_tbl")
- public class UserEntity extends BaseEntity {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- /**
- * 用户名
- */
- private String name;
- /**
- * 用户密码
- */
- private String password;
- @Column(name = "name", length = 255, nullable = false)
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Column(name = "password", length = 255, nullable = false)
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
2、创建登陆的Action类
- import com.opensymphony.xwork2.ActionSupport;
- import com.zaotao.entity.UserEntity;
- import com.zaotao.service.manage.IAdminService;
- /**
- * 管理员的普通action
- * @author 管理员
- *
- */
- public class AdminAction extends ActionSupport {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- /**
- * 用户实体
- */
- private UserEntity user;
- /**
- * 验证码
- */
- private String code;
- public String getCode() {
- return code;
- }
- public void setCode(String code) {
- this.code = code;
- }
- public UserEntity getUser() {
- return user;
- }
- public void setUser(UserEntity user) {
- this.user = user;
- }
- /**
- * 登录
- * @return 登录成功
- */
- public String loginAdmin()
- {
- return "success";
- }
- }
3、由于struts2的查找机制(这个可以参考相关资料),我们在这两个类所在的包中分别新建UserEntity-validation.xml和AdminAction-validation.xml
(1)UserEntity-validation.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
- <validators>
- <field name="name">
- <field-validator type="requiredstring">
- <message>账号不能为空</message>
- </field-validator>
- </field>
- <field name="password">
- <field-validator type="requiredstring">
- <message>密码不能为空</message>
- </field-validator>
- </field>
- </validators>
(2)AdminAction-validation.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
- <validators>
- <field name="user">
- <field-validator type="visitor">
- <message>用户:</message>
- </field-validator>
- </field>
- <field name="code">
- <field-validator type="fieldexpression">
- <param name="expression">
- #session.CODE.equalsIgnoreCase(code)
- </param>
- <message>${#session.CODE}:${code}</message>
- </field-validator>
- </field>
- </validators>
4、建立登陆的jsp页面
- <s:form id="loginForm" action="login_AdminAction">
- <div class="admin_main_top"></div>
- <div id="admin_main">
- <div class="admin_main_head"></div>
- <div id="admin_main_content">
- <ul class="admin_main_ul">
- <li>
- <label>用户名:</label>
- <s:textfield name ="user.name" id="name"/>
- <span id="usererror" class="errorMeg"></span>
- </li>
- <li>
- <label>密码:</label>
- <s:password id="pwd" name="user.password" onfocus="clearError('pwderror')" />
- <span id="pwderror" class="errorMeg"></span>
- </li>
- <li>
- <label>验证码:</label>
- <img src="<%=contextPath %>/authImg.servlet" id="authImg" onclick="refresh()" />
- <s:textfield name="code" id="code" onFocus="clearError('codeerror');" />
- <span id="codeerror" class="errorMeg"></span>
- </li>
- <li>
- <s:submit id="login_button" value="登录" />
- </li>
- </ul>
- </div>
- </div>
- <div><s:fielderror cssStyle="color: red"></s:fielderror></div>
- </s:form>
Action的配置就不写了,说一下注意点。
(1)
<field-validator type="visitor">
<message>用户:</message>
</field-validator>
这段代码中message标签内不能为空,否则将会报错,visitor类型的作用在于,当验证字段user时,将获得user的类型,并根据类型UserEntity查找UserEntity-validation.xml,执行验证。
(2)
当你使用了图形验证码,你想在验证框架中将其进行验证时。需要先将图形验证码的字符串放入session中,然后在验证框架中验证。
<message>${#session.CODE}:${code}</message>
写这句的原因是我在执行图形验证的时候,老是验证不正确,所以我使用这句话,将存放在session中的code和我输入的code在错误信息内输出,已查看是否出现问题
(3)
如果你的表单使用的是simple方式,那么s:form是不会显示错误信息的,那么
我们在jsp页面写入 <s:fielderror cssStyle="color: red"></s:fielderror>,用来输出错误信息,当然你也可以针对每个字段输出错误信息。如果错误信息重复显示,说明你的action采用的单例模式,请将其修改为scope="prototype"
(4)
使用struts验证框架,需要配置input结果跳转。
(5)
若校验同时提供XML和validate()两种方法,则都会被执行,而且是XML校验先执行,validate()方法后执行。而错误信息都会显示。"short-circuit"属性仅针对xml有效
- struts2验证框架小结
- struts2 validate(struts2 验证框架)
- Struts2 验证框架-前台验证
- Struts2验证(框架验证)
- Struts2 中的验证框架
- 关于struts2验证框架
- struts2.x 验证框架
- struts2的验证框架
- struts2 自动验证框架
- struts2的框架验证
- struts2 的验证框架
- Struts2验证框架
- Struts2的验证框架
- struts2的验证框架
- struts2 验证框架、国际化
- struts2的框架验证 .
- Struts2之验证框架
- struts2验证框架
- ACM 的 26 个态度
- Window中通过HWND设置私人数据
- 理解Java常量池--从JVM原理上理解字符串的比较
- 查看80端口占用(适用其它端口)
- Android中Sqlite使用初步
- struts2验证框架小结
- Ajax in Action 实战动态双组合功能
- 海量数据库的查询优化及分页算法方案_SQLServer
- ajax in action 输入前提示 type-ahead suggest
- 补充输入前提示 type-ahead suggest
- poj2418(水题,qsort)
- mQney.comのAjax小结
- cegui_src版安装与编译
- Qt creator教程 一