您的位置:首页 > 其它

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);
}

}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: