解决Servlet请求和响应乱码问题
程序员文章站
2022-05-07 08:21:37
...
package com.bsoft.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bjsxt.pojo.User;
import com.bjsxt.service.LoginService;
import com.bjsxt.service.impl.LoginServiceImpl;
/**
* 解决请求数据乱码问题
* 1.使用String进行数据重新编码 uname=new
* String(uname.getBytes("iso8895-1"),"utf-8");
* 2.使用公共配置
* get方式:
* 步骤一:
* req.setCharacterEncoding("utf-8");
* 步骤二:
* 在tomcat的目录下config目录中修改sever.xml文件,在Connector标签中增加属性
* useBodyEncodingForURI="true"
* post方式: req.setCharacterEncoding("utf-8");
*
* 解决响应数据乱码问题 resp.setContentType("text/html;charset=utf-8");
*
*/
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 设置请求编码格式
req.setCharacterEncoding("utf-8");
// 设置响应编码
resp.setContentType("text/html;charset=utf-8");
// 获取请求数据
String username = req.getParameter("username");
// username = new String(username.getBytes("iso8859-1"), "utf-8");
// //使用string进行编码
String pwd = req.getParameter("password");
System.out.println("username=" + username + ",password=" + pwd);
PrintWriter pw = resp.getWriter();
// 处理请求信息
// 获取业务层对象
LoginService ls = new LoginServiceImpl();
User u = ls.checkLoginService(username, pwd);
if (u != null) {
pw.println("登录成功");
// 使用重定向
// resp.sendRedirect("LoginSuccess");
// 使用请求转发
req.getRequestDispatcher("LoginSuccess").forward(req, resp);
} else {
// 使用request对象实现不同servlet之间数据的流转
req.setAttribute("str", "用户名或密码错误");
pw.println("登录失败");
// resp.sendRedirect("LoginPage");
req.getRequestDispatcher("LoginPage").forward(req, resp);
}
}
}
上一篇: 2199元起!Redmi K40全新墨羽配色上架:5月4日开抢
下一篇: 前端的那点事