05(05属鸡的2023年多大)

  本篇文章为你整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: