SSM实现根据radio实现不同页面的切换

Posted yulinchu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM实现根据radio实现不同页面的切换相关的知识,希望对你有一定的参考价值。

我提交radio选项是根据button提交申请的。

radio是这么写的:

<div class="mt-20 skin-minimal" style="text-align: center;">
<div class="radio-box">
<input type="radio" id="radio-2" name="type" value="2" />
<label for="radio-2">员工</label>
</div>
<div class="radio-box">
<input type="radio" id="radio-1" name="type" value="1" />
<label for="radio-1">管理员</label>
</div>
</div>

button是这么写的:

<div class="row">
<div class="formControls col-8 col-offset-3">
<input id="submitBtn" type="button" class="btn btn-success radius size-L" value="&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;">
</div>
</div>

jsp里关于button是这么写的:

//登录
$("#submitBtn").click(function(){
var data = $("#form").serialize();
$.ajax({
type: "post",
url: "login",
data: data,
dataType: "json", //返回数据类型
success: function(data){
if("success" == data.type){
var rv = $("input[name=‘type‘]:checked").val();
if(rv=="1"){
window.location.href = "userindex";

}else if(rv=="2"){
window.location.href="employeeindex";
}
//window.parent.location.href = "index";
} else{
$.messager.alert("消息提醒", data.msg, "warning");
$("#vcodeImg").click();//切换验证码
$("input[name=‘vcode‘]").val("");//清空验证码输入框
}
}
});
});

Controller是这么写的:

@RequestMapping(value = "/userindex",method=RequestMethod.GET)
public ModelAndView userindex(ModelAndView model){
model.setViewName("system/userindex");
return model;
}

@RequestMapping(value = "/employeeindex",method=RequestMethod.GET)
public ModelAndView studentindex(ModelAndView model){
model.setViewName("system/employeeindex");
return model;
}

话:

由于jsp里是直接跳转到url,所以Controller必须写明这两个,试一下用重定向的方法,在Contrllor里进行判断后跳转。

jsp:

window.parent.location.href = "index";

controller:

@RequestMapping("/index")
public ModelAndView index(ModelAndView model,
@RequestParam(value="rv",required=false) String rv){
if(rv=="1"){
model.setViewName("system:userindex");
return model;
}
model.setViewName("system:studentindex");
return model;
}

不知道是不是由于重定向写的不对,总是执行不了。所以这个方法暂时不成功。

其他:加了信息验证

针对选择的【管理员】【员工】的不同,对应验证其信息。

写在Controller里:

/**
* 登录表单提交
* @return
*/
@RequestMapping(value = "/login",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> login(
@RequestParam(value="name",required=true) String name,
@RequestParam(value="password",required=true) String password,
@RequestParam(value="vcode",required=true) String vcode,
@RequestParam(value="type",required=true) int type,
@RequestParam(value="rv",required=false) String rv,
HttpServletRequest request
){
Map<String, String> ret = new HashMap<String, String>();
if(StringUtils.isEmpty(name)){
ret.put("type", "error");
ret.put("msg", "用户名不能为空!");
return ret;
}
if(StringUtils.isEmpty(password)){
ret.put("type", "error");
ret.put("msg", "密码不能为空!");
return ret;
}
if(StringUtils.isEmpty(vcode)){
ret.put("type", "error");
ret.put("msg", "验证码不能为空!");
return ret;
}
String loginCpacha = (String)request.getSession().getAttribute("loginCpacha");
if(StringUtils.isEmpty(loginCpacha)){
ret.put("type", "error");
ret.put("msg", "长时间未操作,会话已失效,请刷新后重试!");
return ret;
}
if(!vcode.toUpperCase().equals(loginCpacha.toUpperCase())){
ret.put("type", "error");
ret.put("msg", "验证码错误!");
return ret;
}
request.getSession().setAttribute("loginCpacha", null);
//从数据库中去查找用户
if(type == 1){
//if(rv == 1){
//管理员
User user = userService.findByUserName(name);
if(user == null){
ret.put("type", "error");
ret.put("msg", "不存在该用户!");
return ret;
}
if(!password.equals(user.getUserpassword())){
ret.put("type", "error");
ret.put("msg", "密码错误!");
return ret;
}
request.getSession().setAttribute("user", user);
}
else if(type == 2){
//员工
Employeelogin employeelogin = employeeloginService.findByLoginName(name);
if(employeelogin == null){
ret.put("type", "error");
ret.put("msg", "不存在该员工!");
return ret;
}
if(!password.equals(employeelogin.getLoginpassword())){
ret.put("type", "error");
ret.put("msg", "密码错误!");
return ret;
}
request.getSession().setAttribute("employeelogin", employeelogin);
}
request.getSession().setAttribute("userType", type);
ret.put("type", "success");
ret.put("msg", "登录成功!");
return ret;
}

由于【员工】【管理员】对应的登录名和密码取了不同的名字,前期又是以管理员进行测试,所以@RequestParam还引入了员工的【loginname】和【loginpassword】,但是总出现‘GET‘的问题,把这两个注释掉,就不会出现——原因是在对应的.jsp文件中,并没有这两个变量名。

思考后才反应过来,@RequestParam引入的是对应填写框的变量名,所以我引入的依旧只是(value=“name”),然后针对不同的身份,将name分别传入到findByUserName(name)findByLoginName(name)来进行验证。

另外,判断的条件是type,不能是进行页面判断的rv,因为rv=t所选择的radio的value的值,type就是单纯的两个radio的type值。

以上是关于SSM实现根据radio实现不同页面的切换的主要内容,如果未能解决你的问题,请参考以下文章

根据不同域名实现数据源切换

如何实现根据环境切换不同配置?

非单页的静态文件如何实现多语言切换

基于jsp+ssm的咖啡厅管理系统

求javascript 根据radio选择内容不同 显示不同的表单

用switch函数根据选择不同的radio出现不同的视图