本篇文章为你整理了05(05属鸡的2023年多大)的详细内容,包含有05的2023年多大 05属鸡的2023年多大 052D 05j909图集 05,希望能帮助你了解 05。
1、Request
1.1、Request继承体系
1、Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中
2、使用request对象,查阅JavaEE API文档的HttpServletRequest接口
1.2、Request获取请求数据
1.2.1、获取请求数据的方法
ServletInputStream getInputStream():获取字节输入流
BufferedReader getReader():获取字符输入流
这里的GET请求方式和POST请求方式,区别主要在于获取请求参数的方式不一样
那么是否有一种统一获取请求参数的方式,从而统一doGet和doPost方法内的代码?
在Tomcat源码中,实现了一个在获取请求方式的时候,将参数赋值给了同一个成员变量param,使得doGet和doPost方法内的请求参数方式的代码有了统一的可能
Map String,String[] getParameterMap():获取所有参数Map集合
String getParameter(String name):根据名称获取参数值(单个值)
String[] getParameterValues(String name):根据名称获取参数值(数组)
Tomcat 8.0 之后,GET请求乱码的问题已经被解决,设置默认的编码方式为UTF-8,其他Tomcat的默认编码都为 ISO-8859-1;
Request解决POST请求参数中文乱码
给POST方法设置输入流的编码
request.setCharacterEncoding("UTF-8")
void setAttribute(String name, Object o):存储数据到request域中
Object getAttribute(String name):根据key,获取值
void removeAttribute(String name):根据key,删除键值对
2.2、Response设置响应数据
响应数据分为3个部分
HTTP/1.1 200 OK
void setStatus(int sc):设置响应状态
PrintWriter getWriter():获取字符输出流
ServletOutputStream getOutputStream():获取字节输出流
可以重定向到任意位置的资源(服务器内部、外部均可)
再次请求,不能在多个资源使用request共享数据
该流不需要关闭,随着响应结束,response对象销毁,由服务器关闭
中文数据乱码,原因是通过Response获取的字符输出流默认编码跟Tomcat的默认编码一样都是:ISO-8859-1
response.setContentType("text/html;charset=utf-8");
明确路径谁使用?
浏览器使用
/开头是绝对路径,会缺少项目访问路径
不加/是相对路径,使用当前访问路径作为参照物,不会缺少项目访问路径
浏览器使用的时候不加/
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 在这里处理请求
// 处理html表单的POST请求发送数据,中文时存在的编码问题
request.setCharacterEncoding("utf-8");
// 1. 获取参数
String username = request.getParameter("username");
String password = request.getParameter("password");
// 2. 连接数据库
SqlSession sqlSession = MybatisUtils.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUser(username, password);
// 3. 判断表中是否存在该用户信息
// 输出提示信息之前,需要解决response返回响应数据可能出现中文乱码的问题
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
if (user != null) {
// 输出字符流信息
writer.println("登录成功!");
// writer.println(" style window.alert(恭喜您登录成功!) /style
} else {
writer.println("登录失败!");
// writer.println(" style window.alert(账号密码错误,登录失败!) /style
sqlSession.close();
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 在这里处理请求
// 处理POST请求,表单返回的数据可能出现乱码的问题
request.setCharacterEncoding("utf-8");
// 获取参数
String username = request.getParameter("username");
String password = request.getParameter("password");
// 连接数据库
SqlSession sqlSession = MybatisUtils.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 查询该信息是否存在数据库
User user = mapper.selectUserByUsername(username);
// 解决response响应的数据可能出现乱码的问题
response.setContentType("text/html;charset=utf-8");
// 获取字符输出流
PrintWriter writer = response.getWriter();
// 考虑存在和不存在问题
if (user != null) {
// 如果用户存在
writer.println("该用户已经存在,请重新注册!");
} else {
// 如果用户不存在,那么就创建这个用户
User userNew = new User();
userNew.setUsername(username);
userNew.setPassword(password);
mapper.addUser(userNew);
sqlSession.commit();
writer.println("注册成功!");
sqlSession.close();
以上就是05(05属鸡的2023年多大)的详细内容,想要了解更多 05的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。