用if加上else if判断挺蠢的,每一次添加新功能还要去写一个else if 代码复用性不够高,所以我们就想说用一个好点的方法,那就是反射,因为每次判断的字符串跟我们调用功能名字其实是一样的,所以反射调用下同名方法就可以了
package cn.zsp.web;
import cn.zsp.pojo.User;
import cn.zsp.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;
public class UserServlet extends HttpServlet {
private UserServiceImpl userService=new UserServiceImpl();
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
try {
Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class,
HttpServletResponse.class);
method.invoke(this,req,resp);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void login(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
// 3、 根据login方法返回结果判断登来是否成功
if (userService.login(new User(username,password))==null)
{
request.setAttribute("msg","用户名或密码错误");
request.setAttribute("username",username);
// 失败
// 跳回登录页面
request.getRequestDispatcher("/pages/user/login.jsp").forward(request,response);
}else
{
// 成功
// 跳到成功页面logirl success. html
request.getRequestDispatcher("/pages/user/login_success.jsp").forward(request,response);
}
}
protected void regist(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
// 1、 获取请求的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String email = req.getParameter("email");
String code = req.getParameter("code");
// 2、 检查验证码是否正确
if ("abcde".equalsIgnoreCase(code))
{
//
// 正确
// 3、检查用户名是否可用
// 不可用
// 跳回注册页面
if(userService.existsUsername(username))
{
req.setAttribute("msg","用户名已存在");
req.setAttribute("username",username);
req.setAttribute("email",email);
req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);
}else{
userService.registUser(new User(username,password,
email));
// 调用Sservice保存到数据库
// 跳到注册成功末面regist_ success. html
req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req,resp);
}
//
}
else {
// 不正确
// 跳回注册页面
req.setAttribute("msg","验证码错误");
req.setAttribute("username",username);
req.setAttribute("email",email);
System.out.println("验证码错误,验证码是"+code);
req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);
}
}
}