OA项目中关于用户名唯一的验证
2013-08-11 01:34
260 查看
struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <!-- 配置文件改了以后不用重新启动 --> <constant name="struts.devMode" value="true"/> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.ui.theme" value="simple"></constant> <!--自定义结果类型用的--> <package name="ajax" extends="struts-default"> <result-types> <result-type name="ajaxResult" class="cn.itcast.oa.result.ajaxResult"></result-type> </result-types> </package> <include file="struts2/struts-person.xml"></include> <include file="struts2/struts-department.xml"></include> <include file="struts2/struts-post.xml"></include> <include file="struts2/struts-user.xml"></include> </struts>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <package name="user" namespace="/" extends="struts-default"> <action name="userAction_*" method="{1}" class = "userAction"> <result name = "listAction">/WEB-INF/jsp/User/list.jsp</result> <result name = "addUI">/WEB-INF/jsp/User/add.jsp </result> <result name="action2action" type="redirectAction">userAction_getAllUser.action</result> </action> </package> <!-- struts2 支持json --> <package name="userjson" namespace="/" extends="json-default"> <action name="userJsonAction_*" method="{1}" class="userAction"> <result type="json"></result> </action> </package> <!-- 自定义结果用的 <package name="userjson" namespace="/" extends="ajax"> <action name="userJsonAction_*" method="{1}" class="userAction"> <result type="ajaxResult"></result> </action> </package> --> </struts>
-------------------------------------------------------
JS代码
var user = { forValidate:function(){ $("input[type='image']").unbind("click"); $("input[type='image']").bind("click",function(){ if($("select[name='did'] option:selected").attr("value")==""){ alert("请选择部门"); return false; }else{ if(!$("select[name='pids'] option:selected").attr("value")){ alert("请选择岗位"); return false; }else{ if($("#message").text()=="该用户已经存在 "){ alert("请输入合理的用户名"); return false; }else{ return true; } } return true; } }); }, initEvent:function(){ $("input[name='username']").unbind("blur"); $("input[name='username']").bind("blur",function(){ user.checkUser($(this).val()); }); }, checkUser:function(username){ var parameter = { username:username } $.ajax({ url:"userJsonAction_checkUsername.action", data:parameter, type:"POST", success:function(data){ $("#message").text(data.message); if(data.message=="该用户名可以使用"){ $("#message").css("color","green"); }else{ $("#message").css("color","red"); } }, error:function(XMLHttpRequest,textStatus,errorThrown){ //在servlet中后台出现异常,ajax执行error函数 //但是在struts2中的action中 不论是出现异常还是正常成功 都是只想能够success方法: } }); //$.post:中data只能接受正常的信息 不能接受错误信息(servlet或action端出现异常); /*$.post("userJsonAction_checkUsername.action",parameter,function(data){ $("#message").text(data.message); if(data.message=="该用户名可以使用"){ $("#message").css("color","green"); }else{ $("#message").css("color","red"); } });*/ } }; $().ready(function(){ user.forValidate(); user.initEvent(); }); /* 这样写格式不太好 $().ready(function(){ $("input[type='image']").unbind("click"); $("input[type='image']").bind("click",function(){ if($("select[name='did'] option:selected").attr("value")==""){ alert("请选择部门"); return false; }else{ if(!$("select[name='pids'] option:selected").attr("value")){ alert("请选择岗位"); return false; } return true; } }); }); */
Action代码
package cn.itcast.oa.struts.action; import java.util.Collection; import java.util.Set; import javax.annotation.Resource; import org.apache.struts2.ServletActionContext; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import cn.itcast.oa.domain.Department; import cn.itcast.oa.domain.Post; import cn.itcast.oa.domain.User; import cn.itcast.oa.service.DepartmentService; import cn.itcast.oa.service.PostService; import cn.itcast.oa.service.UserService; import com.opensymphony.xwork2.ActionContext; @Controller("userAction") @Scope("prototype") public class UserAction extends BaseAction<User> { @Resource(name="userService") private UserService userService; @Resource(name="departmentService") private DepartmentService departmentService; @Resource(name = "postService") private PostService postService; //属性驱动 通过MultiselectIntercept拦截器将Sring类型的转成Long类型 private Long did; private Long[]pids; private String message; public Long getDid() { return did; } public void setDid(Long did) { this.did = did; } public Long[] getPids() { return pids; } public void setPids(Long[] pids) { this.pids = pids; } public String getMessage() { return message; } public String getAllUser(){ Collection<User> userList = this.userService.getAllUser(); ActionContext.getContext().getValueStack().push(userList); return listAction; } public String addUI(){ /** * 1.把部门表的所有数据查询出来 * 2.把岗位表的数据查询出来 * 3.跳转到添加页面 */ Collection<Department> departmentList = this.departmentService.getAllDepartment(); ActionContext.getContext().put("departmentList",departmentList); Collection<Post> postList = this.postService.getAllPost(); ActionContext.getContext().put("postList",postList); return addUI; } public String add(){ /** * 如何获取页面中的数据 * 1.如果页面中的数据来源与一张表 直接用模型驱动就可以了 * 2.如果页面中的数据来源与多张表 可以采用模型驱动和属性驱动相结合的方式 */ /* * 1.创建一个user对象 * 2.把模型驱动的值赋值给user对象 * 3.根据did提取出该部门 * 4.根据pids提取岗位 * 5.建立user对象和部门和岗位之间的关系 * 6.执行save操作 */ User user = new User(); //一般属性的赋值 BeanUtils.copyProperties(this.getModel(),user); //建立user和department之间的联系 Department department = this.departmentService.getDepartment(this.did); user.setDepartment(department); //建立users和posts之间的关系 Set<Post> posts = this.postService.getPostsByIds(pids); user.setPosts(posts); this.userService.saveUser(user); return action2action; } public String checkUsername(){ User user = this.userService.getUserByUsername(this.getModel().getUsername()); if(user==null){ //传到自定义结果集中字符串 //ServletActionContext.getContext().getValueStack().push("该用户名可以使用");//放入栈顶; this.message="该用户名可以使用"; }else{ //ServletActionContext.getContext().getValueStack().push("该用户已经存在 "); this.message = "该用户已经存在 "; } return SUCCESS; } }
DAO代码
package cn.itcast.oa.dao.daoImpl; import java.util.Collection; import java.util.HashSet; import java.util.List; import org.springframework.stereotype.Repository; import cn.itcast.oa.dao.UserDao; import cn.itcast.oa.dao.baseImpl.BaseDaoImpl; import cn.itcast.oa.domain.User; @Repository ("userDao") public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao<User> { public Collection<User> getUsers(){ List<User> userlist = this.hibernateTemplate.find("from User u left join fetch u.department d left join fetch u.posts p order by u.uid desc"); return new HashSet<User>(userlist); } public User getUserByUsername(String username) { List<User> userlist = this.hibernateTemplate.find("from User where username = ?",username); if(userlist.size()==0){ return null; }else{ return userlist.get(0); } } }
自定义结果类型代码
package cn.itcast.oa.result; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.Result; /*自定义结果集*/ public class ajaxResult implements Result { public void execute(ActionInvocation arg0) throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); //防止在js端接受的message乱码 response.setCharacterEncoding("utf-8"); String message = ServletActionContext.getContext().getValueStack().peek().toString();//取出栈顶元素 response.getWriter().print(message); } }
相关文章推荐
- WCF 安全关于用户名/密码身份验证设置
- ajax配合struts2(ssh2)实现无刷新验证用户名是否唯一
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)
- 原创:struts2技术实现用户名唯一的验证处理详解
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)
- OA项目之Jquery客户端验证
- 关于安卓登录注册页面构建(包含用户名密码验证+记住密码+再按一次返回退出)
- 用户名邮箱唯一验证 ---ajax
- 关于ajax验证用户名是否可用的信息
- 关于 struts+ajax+jquery 验证用户名是否重复
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)
- 处女项目后关于IC验证经验的总结
- struts2技术实现用户名唯一的验证处理详解
- 关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题
- 关于在非安全信道中的用户名-密码方式的验证安全问题
- 关于Django的验证用户名密码登录
- 异步验证用户名是否唯一的方法
- servlet技术实现用户名唯一的验证处理详解
- 正则表达式关于复杂用户名的验证
- 实现随机生成的图片数字验证(OA项目附加_可防止非法注册)