求助啊,为什么帐号密码验证码输入正确,就是不输出登录成功

qq_40407534 2017-11-19 10:22:52
package com.itheima.demo1;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RegistServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1.获取三个参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String check_code = request.getParameter("check_code");
// 2.获取CheckImgSerlet中session的存的验证码值
String savecheck = (String) request.getSession().getAttribute("checkcode_session");
response.setContentType("text/html;charset=utf-8");
// 3.比较是否登录正确
/*
* 1.登录成功 2.验证码错误 3.账号或密码错误
*/

if (username.equals("zhangsan") && password.equals("123") && check_code.equals(savecheck)) {
// 开始进行是否首次登录以及显示上次登录时间的代码书写
// 1.创建时间
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String currentTime = simpleDateFormat.format(date);
// 2.创建cookie并且设置好
Cookie cookie = new Cookie("lastAccessTime", currentTime);
cookie.setMaxAge(60);
response.addCookie(cookie);
// 3.再次访问时获取到cookie,并获取出cookie中时间的值
Cookie[] cookies = request.getCookies();
String lastAccessTime = null;
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("lastAccessTime")) {
lastAccessTime = cookies[i].getValue();
}
}
if (lastAccessTime == null) {
response.getWriter().write("首次登录");
} else {
response.getWriter().write("上次登录的时间:" + lastAccessTime);
}
} else if (check_code.equals(savecheck)) {
response.sendRedirect("/WEB1/error.html");
} else {
response.sendRedirect("/WEB1/error.html");
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
[color=#FF0000]CheckImgSerlet这个是验证码的servlet,我是通过一个html来输入登录信息,但是输出正确的话也会重定向到error.html;这是哪不对吗?
...全文
339 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40407534 2017-11-20
  • 打赏
  • 举报
回复
引用 6 楼 ai977313677 的回复:
utf-8一般来说也是可以的,不过设置的GBK,在中文字符不会出什么问题。 在Servlet里面的post里设置一下编码格式应该就好了。 ======================== request.setCharacterEncoding()是你设置获得数据的编码方式。 response.setCharacterEncoding()是你响应时设置的编码。 response.setContentType()是设置你响应时的MIME及编码,其中也可以不设置编码,由response.setCharacterEncoding()设置,即response.setContentType(text/html; charset=utf-8)可以写成response.setCharacterEncoding("utf-8")和response.setContentType("text/html")
换了jsp了不用那个html了,结果关了myeclipse 重开了下,就登录成功了,3q
qq_40407534 2017-11-20
  • 打赏
  • 举报
回复
引用 6 楼 ai977313677 的回复:
utf-8一般来说也是可以的,不过设置的GBK,在中文字符不会出什么问题。
在Servlet里面的post里设置一下编码格式应该就好了。

========================
request.setCharacterEncoding()是你设置获得数据的编码方式。
response.setCharacterEncoding()是你响应时设置的编码。
response.setContentType()是设置你响应时的MIME及编码,其中也可以不设置编码,由response.setCharacterEncoding()设置,即response.setContentType(text/html; charset=utf-8)可以写成response.setCharacterEncoding("utf-8")和response.setContentType("text/html")

  • 打赏
  • 举报
回复
utf-8一般来说也是可以的,不过设置的GBK,在中文字符不会出什么问题。 在Servlet里面的post里设置一下编码格式应该就好了。 ======================== request.setCharacterEncoding()是你设置获得数据的编码方式。 response.setCharacterEncoding()是你响应时设置的编码。 response.setContentType()是设置你响应时的MIME及编码,其中也可以不设置编码,由response.setCharacterEncoding()设置,即response.setContentType(text/html; charset=utf-8)可以写成response.setCharacterEncoding("utf-8")和response.setContentType("text/html")
  • 打赏
  • 举报
回复

} else if (check_code.equals(savecheck)) {
response.sendRedirect("/WEB1/error.html");
} else {
response.sendRedirect("/WEB1/error.html");
}
}
qq_40407534 2017-11-19
  • 打赏
  • 举报
回复


request.setcharacterEncording("utf-8")这个获取的参数前,这是为什么啊,utf8是乱码,可是我把一个图片charset改成gbk;就不乱码
想不通
qq_40407534 2017-11-19
  • 打赏
  • 举报
回复
引用 3 楼 ai977313677 的回复:
无非就是if里面的判断有问题,由于是在一个页面进行的数据输入和传输,没有客户端的页面重定向,所以应该和Request有效范围无关。
缩小问题范围之后就是,你有没有检查过savecheck到if判断之前保存的是什么?通过debug或者控制台输出显示在if判断之前username,password以及savecheck内容。
如果这些都没有问题,可以重新部署一下,看看效果。

对对,输出台我把参数输出了一下,发现原来是验证码根本就不是汉字;还是编码的问题,就是三个参数中的check_code;找到问题了
算了上图吧
可是request.setcharacterEncording("utf-8")怎么改不了,这个编码是不是要弄iso8859-1才可以啊;怎么弄啊
  • 打赏
  • 举报
回复
无非就是if里面的判断有问题,由于是在一个页面进行的数据输入和传输,没有客户端的页面重定向,所以应该和Request有效范围无关。 缩小问题范围之后就是,你有没有检查过savecheck到if判断之前保存的是什么?通过debug或者控制台输出显示在if判断之前username,password以及savecheck内容。 如果这些都没有问题,可以重新部署一下,看看效果。
qq_40407534 2017-11-19
  • 打赏
  • 举报
回复
引用 1 楼 ai977313677 的回复:

} else if (check_code.equals(savecheck)) {
response.sendRedirect("/WEB1/error.html");
} else {
response.sendRedirect("/WEB1/error.html");
}
}
/WEB1/error.html这是其他的页面,我是想通过第一个if进去的;可是总是跳到else{}里边; 验证码是中文的,我也在获取三个参数钱设置了request.setcharacterEncording("utf-8")了,可是还是不对

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧