javaWeb学习整理02

Javaweb-02

Servlet

servlet初始化

  • ?初始化是在浏览器第一次发送请求时,会创建servlet对象并初始化,但初始化会有时间
  • 调整初始化时机
    • 设置为tomcat服务器一启动就初始化servlet
  • 在web.xml中配置上1
    • 正数,数值越小被创建优先级越高
  • 在注解的形式中配置:
    • @WebServlet(value = "/loginServlet",loadOnStartup = 1)

Servlet映射路径配置

  • 三种路径配置方式
    • 在web.xml中配置文件标签
    • 开发中一般使用完全匹配,一个servlet对应一个映射路径
  • 1.完全路径匹配
    • /user/path/
  • 2.目录匹配
    • /user/*
  • 3.后缀名匹配
    • *.do
  • 4.缺省路径
    • /
    • 访问路径找不到,就会找缺省路径下的

http

HTTP协议概述

  • 浏览器和服务器按照一定格式进行数据交互,这种数据交互格式就是一种协议
    • 协议:网络通信中,以固定的格式进行数据传输
  • B/S 是按照HTTP协议进行通信的
    • 通信就是一次请求,响应一次
      • 请求协议
      • 响应协议
  • HTTP是超文本传输协议
    • 版本
      • HTTP/1.0
        • 发一次请求创建一次链接,获得一个web资源,然后断开
      • HTTP/1.1
        • 发送请求,创建一次连接,获得多个web资源,连接断开
    • ❗❗❗TCP协议是Java中Socket类表示TCP协议
    • ❗❗❗web技术中HttpServletRequest接口用的是HTTP协议
  • 请求方式
    • POST
      • 特点
      • 请求数据放在了请求体中
      • 不会受浏览器的限制
    • GET
      • 特点
      • 请求数据显示在地址栏中,用?来拼接
        • 不安全
      • 不同的浏览器对URL的字符串长度要求不同
  • 协议结构
    • 请求报文
      • 请求行,请求体,请求头
    • 响应报文
      • 响应行,响应体,响应头

抓取HTTP请求

  • 准备有提交表单的html
    • 更改action中的GET/POST请求
  • new servletJava文件
  • 运行后,浏览器中按F12
    • Network---->可查看Headers

http请求报文分析

  • 请求行,请求头,请求体

request

获取请求行

  • API
  • getMethod()
    • 获取请求方式类型,GET/POST
  • getRequestURL()
    • 获取客户端发出的完整URL
    • StringBuffer类型,可用toString()或者+“”,变成String类型
  • getRemoteAddr()
    • 获取IP地址
  • getProtocol()
    • 获取当前协议的名称和版本

获取请求头信息

  • API
  • 都是由k:V形式组成
  • String getHeader(String name) 根据请求头的key关键字获取请求头信息
  • Enumeration getHeaderNames() 返回此请求包含的所有头信息的key,属于对枚举类型进行遍历

🔹获取请求体信息

  • API
    • name是form中的name属性
  • String getParameter(String name)
    • 如果没有,返回null,如果有多个,会返回第一个
  • String[] getParameterValues(name)
    • 一般是针对复选框
  • Map<String,String[]> request.getParameterMAp()
    • 获取表单中的所有数据

使用工具类封装请求体数据

  • 🔹BeanUtils工具类
    • 步骤
    • 1、在web--->WEB-INF下新建lib目录,并导入commons的jar包
    • 2、准备带有表单的HTML
    • 3、创建JavaBean就是实体类
    • 4、new 一个servlet类,创建空的JavaBean对象
    • Map<String, String[]> map = request.getParameterMap();//获取所有请求参数
    • //使用BeanUtils工具类提供的API方法
      BeanUtils.populate(user,map);
  • ❗❗❗form中的name属性名和JavaBean的属性名要保持一致

request的生命周期

      • 创建:浏览器给tomcat服务器发送请求后,tomcat创建request对象封装请求数据
      • 销毁:tomcat服务器给浏览器响应信息结束后销毁request对象

request域对象

  • 一次请求中的多个servlet可以数据共享
  • API
  • void setAttribute(String name,Obj o)
  • Obj getAttribute(String name)
  • void removeAttribute(string name)
  • ❗❗❗getParameter()方法和getAttribute()方法的区别:
      • getParameter()方法获取的是浏览器提交的数据(是表单提交的数据);
      • getAttribute()方法获取的是request域中的数据(即获取的都是通过request.setAttribute()设置的值);

请求转发

  • 从一个servlet中发起,请求到另一个Servlet或静态页面
    • 转发后地址栏中地址不会改变
  • API
  • RequestDispatcher getRequestDispatcher(String path)
    • 1、获取请求转发器对象
  • void forward(ServletRequest request, ServletResponse response)
    • 2、调用方法进行请求转发

登录案例

web

  • 接受浏览器发送的数据,
  • 把接收数据封装到JavaBean中
  • 实例化service,调用业务层对象,传递JavaBean给业务层
  • 基于业务层的执行结果,进行跳转转发

service

  • 接受web层的JavaBean对象
  • 实例化dao层,把JavaBean传递给dao层
  • 基于dao层功能返回值进行业务逻辑处理

dao

  • 连接数据库
  • 发送SQL,接收结果
  • 返回结果给service层

解决中文乱码

  • POST会有乱码问题,GET已经解决了乱码问题
  • request.setCharacterEncoding("utf-8");
  • 必须保证设置字符集的代码放在doGet()或doPost()方法中的第一行位置
posted @ 2021-09-11 20:10  星星上的张优秀  阅读(20)  评论(0编辑  收藏  举报
Live2D