JAVAWEB-servlet

javaweb

servlet
1. 什么是servlet?
(1). servlet是运行在服务器上的Java小程序,定义一个类实现Servlet接口,实现Servlet里面的方法,获取继承HttpServlet 重现doGet、doPost方法,这样一个servlet就创建完成 。
(2).servlet的作用是接收浏览器的请求以及接收浏览器数据,向浏览器返回服务器的处理结果。
(3).servlet是JavaWeb的三大组件之一(三大组件:servlet,过滤器:Filter,监听器:Listener)。
2.servlet的作用
javaweb的运行图示
(1).用来处理客户端(浏览器)发送过来的请求并对请求响应。
(2).servlet的任务:处理客户端(浏览器)发送过来的请求及参数;调用service业务处理层;向浏览器响应数据。
(3)Servlet要求规范
①Servlet程序需要编写实现类,并在web.xml进行配置访问路径
②实现类
1)通常继承HttpServlet并重写doGet(),doPost()
2)doGet() : 用于处理get请求
3)doPost() : 用于处理post请求
③配置信息
1)在web.xml进行配置访问路径,需要注意两边name保持一致
3.servlet执行流程
1.http://localhost:8080/day12/demo
(1)在浏览器输入请求地址并回车(前提服务器启动)
(2)检查day12这个项目是否存在
(3)去web.xml中找到/demo路径
(4)找到url-pattern对应的servlet-name的名字
(5)找到和servlet-name相同名称的servlet-name
(6)找相对应的Servlet类
(7)执行相对应的doGet()或者doPost()方法

request

Request常用的方法
  1. request.getParameter(“”)
    (1)获取指定参数值,参数名称相同时,获取第一个参数值;
  2. request.getParameterValues(“”)
    (1)获取指定参数值,参数名称相同时,获取多个参数值,返回值为数组;
  3. request.getParameterNames()
    (1)获取参数中的所有name属性,返回值为Enumeration;
  4. request.getParameterMap()
    (1)获取所有参数,返回值为Map,Map中的key为属性名,value为属性值,value数据类型是一个String数组;
  5. 代码示例
    在这里插入图片描述
代码优化
  1. 问题 : 每一个表单参数都需要写一个getParameter()方法,不利于开发
  2. 可以使用BeanUtils类中的populate(bean,map)直接将map中的数据封装到实体类对象当中
  3. 注意
    (1)map中的键必须和bean中的属性能对应上(区分大小写)
  4. 代码示例

在这里插入图片描述

post请求乱码问题解决
  1. post方式提交发生中文乱码
    (1)request.setCharacterEncoding(“utf-8”);
    (2)可以应用于doGet和doPost方法;

  2. get方式提交为什么不乱码
    (1)tomcat8.0版本之后get提交方式的乱码已经被解决

Request对象讲解
  1. 在Servlet API中,定义了一个HttpServletRequest接口,他继承自ServletRequest接口,专门用于封装HTTP请求消息. 由于HTTP请求消息分为了请求行,头,体三部分,因此,在httpServletRequest接口中定义了获取请求行 头 体的相关方法。
  2. 区别
    (1)ServletRequest请求的顶层接口.规定了普通请求的操作方法,无法处理http协议;
    (2)HttpServletRequest是ServletRequest子接口.可以处理Http协议;
    (3)注意 : request对象只能进行请求行 头 体读取操作,不能进行写入数据操作;

response

response知识讲解
  1. 在Servlet API中,定义了HttpServletResponse接口, 他继承自ServletResponse接口
  2. 区别
    (1)HttpServletResponse接口,专门处理http协议的响应接口
    (2)ServletResponse接口,普通的响应接口,不能处理http协议
response对象操作响应行
  1. setStatus(int code)
    (1)设置响应的状态码
  2. sendError(int code, String message)
    (1)设置错误提示信息
response操作响应头
  1. 设置响应头字段的方法
    (1)addHeader(String name, String value)
    (2)setHeader(String name, String value)
    区别:1)相同点1.这两个方法都是用来设置http协议的响应头字段,其中name为key value为值;2)不同点:1.addHeader方法可以增加同名的响应头字段,而setHeader方法则会覆盖同名头字段
    代码示例
    代码示例
    (3)void setCharacterEncoding(String charset):①该方法用于设置servlet输出内容使用的字符编码. 对于HTTP来说,就是设置Content-type头字段中的字符编码部分;
    (4)void setContentType(String type):①该方法用户这是servlet输出内容的mime类型. 比如发送到客户端的内容是jpeg的格式图片,那么就需要设置”image/jpeg”;②需要注意的是,如果响应的内容为文本,setContentType方法还可以设置字符编码,如”text/html;charset=utf-8”;
response操作响应体
  1. 响应体信息是无限的,所以一般用来传递大量数据
  2. 常用方式
    (1)getOutputStream():①获取一个字节流,通过write方法向响应体输出二进制字节流信息
    (2)getWriter():①获取一个字符流,通过write方法向响应体输出字符流信息
    代码示例
    在这里插入图片描述
  3. 中文乱码问题解决
    在这里插入图片描述
  4. 流关闭问题
    (1)流是服务器自动管理的,不用程序员手动关闭
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值