*未解决 javaweb登录+验证码 bug存留
参考:https://www.cnblogs.com/ajing2018/p/15917166.html 感谢大佬指路 虽然还是没跑起来quq
## 案例:验证码
1. 案例需求:
1. 访问带有验证码的登录页面login.jsp
2. 用户输入用户名,密码以及验证码。
* 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误
* 如果验证码输入有误,跳转登录页面,提示:验证码错误
* 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您*
“这里没有用dao层,但是写了,妄想写dao层连数据库进行比较,但是我不会啊- - 先做几个案例再回来解决 报错500比404害烦”
- 分析
- 项目结构
代码:
package cn.com.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.Map; @WebServlet("/loginKServlet") public class LoginKServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置request编码 request.setCharacterEncoding("utf-8"); //2 获取map 链接数据库就用这边这个 // Map<String, String[]> map = request.getParameterMap(); //2 简易版: String username = request.getParameter("username"); String password = request.getParameter("password"); String checkCode = request.getParameter("checkCode"); //先获取生成的验证码 HttpSession session = request.getSession(); String checkCode_session = (String) session.getAttribute("checkCode_session"); //判断验证码 //获取数据库的值 check_session // username =username if (checkCode_session.equalsIgnoreCase(checkCode)) { //本来想能不能直接checkCode.equals(request.getSession().getAttribute()) //但是放在if中前面的就是为了一定程度的空指针异常 //忽略大小写 if ("admin".equals(username) && "root".equals(password)) {//调用userdao //储存信息,重定向到sussece,jsp session.setAttribute("username", username); response.sendRedirect(request.getContextPath() + "/success.jsp"); } else { //不一致 request.setAttribute("login_error", "error of password or username"); //转发到登录页面 request.getRequestDispatcher("/Login.jsp").forward(request, response); } } else { //不一致 request.setAttribute("cc_error", "error"); //转发到登录页面 request.getRequestDispatcher("/Login.jsp").forward(request, response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
- 运行结果
- jsp页面
-
- submit页面
单独访问failsevlet可以成功显示出来,successservlet也可以;
所以问题应该是在LoginKservlet里
但是先不管了,因为本次的代码也没有加dao层- -实践不够 继续往下了 存档为主