SpringMVC不同Controller内部调用不同的Controller的问题
今天再写一个忘记密码进行密码修改的后台时遇到一个问题
思路
1.首先需要验证用户名和邮箱账号
2.后台接收、检验账号和密码
3.检验成功后调用随机生成验证码的Controller,随机生成一个验证码
4.使用邮件发送的Controller向指定的用户发送随机生成验证码
5.用户接收验证码,输入到验证码输入框
6.后台验证Session中和用户输入的验证码是否一致
7.验证成功,给予修改密码
以上就表示一个Ajax异步请求的Controller中需要调用两个不同的Controller下的不同方法
我第一时间想到的是使用
response.sendRedirect("验证码控制器?date="+ new date);
或者
request.getRequestDispatcher("验证码控制器?date="+ new date).forward(request, response);
然后发送邮件
response.sendRedirect("发送邮件控制器?userEmail="+user.getEmail);
或者
request.getRequestDispatcher("发送邮件控制器?userEmail="+user.getEmail).forward(request, response);
由于几次失败甚至出现了
response.getWriter().print("<script>location.href='发送邮件控制器?userEmail="+user.getEmail;</script>");
确实惨目忍睹;本人也是自学新手一枚,哈哈哈
其实我已在无形中已经被spring给绕进去了;而却忘记了Controller自己本身就是一个类,是个类我们就可以直接NEW它嘛!我直接实例一个Controller在用它调用它下面的对应的发放,其实spring是很灵活的,就是把自己绕进去了
完整代码
@ResponseBody
public int querMailByUsername(String username,String mail,HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{
int fag = 0;
CheckCode checkCode = new CheckCode();
checkCode.checkCode(request, response);
String serverCC = (String) session.getAttribute("verCode"); //服务器发送的验证码
User user = userService.queryUserByUsernName(username);
if(user != null && user.getEmail().equalsIgnoreCase(mail)) {
try {
Mail.SendMail(user.getEmail(),serverCC); //用户的邮箱和随机验证码
fag=0;
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
fag=2;
}
}else {
fag=1;
}
return fag;
}
总结在一个Controller中需要使用另外的Controller下的某个方法时需了解Controller也是一个类我们直接new再去点它方法,他需要什么参数就给它,效果理想
------------------新手一个,实现的方法可能简单粗暴,大神请多指点-------------------