Servlet的请求和响应对象

前情提要:

  • Servlet是服务器内部的Java程序,为用户提供服务
  • 创建Servlet的三种方式:
  1. 实现Servlet接口
  2. 继承GenericServlet的抽象类,重写service
  3. 继承HttpServlet类,重写doGet/doPost方法
  • 注册Servlet的两种方式
  1. 在web.xml注册<servlet><servlet-mapping>
  2. 使用@WebServlet注解

 

Servlet是单实例多线程模型,尽量不要砸Servlet中定义成员变量,会存在线程安全问题

 

 

 Servlet的service可以为用户提供服务,包含两个参数:

  • HttpServletRequest 请求
  • HttpServletResponse 响应

请求对象

HttpServletRequest的主要方法

方法说明
String getParameter("参数名")获得请求参数 
setCharacterEncoding("编码")设置请求编码
getRequestURL()获得请求的URL
getRequestDispatcher("URL")获得请求转发器
setAttribute("名称",值)保存键值对数据
Object getAttribute("名称") 获得保存的数据

 

 

响应对象

HttpServletResponse对象,用于向客户端返回数据

主要方法

方法名说明
setCharacterEncoding设置编码 
setContentType("类型")设置内容类型
PrintWriter getWriter()获得输出流
sendRedirect("URL") 重定向

 


Servlet的跳转方式

跳转方式有两种:

1. 请求转发
2. 重定向

区别:

    1. 跳转方式,请求转发是服务器内部跳转,重定向是服务器外部跳转
    2. 请求次数,请求转发是一次请求,重定向是两次请求
    3. 速度,请求转发快于重定向
    4. 地址栏,请求转发地址栏不会改变,重定向地址栏会改变
    5. 数据传递,请求转发可以传递请求中的数据,重定向不能传递

 

 

 


req和resp的作用及常用方法 实用案例

一、作用

二、常用方法

1、req

  • req.setCharacterEncoding() 设置对客户端请求和数据库取值时的编码,对post请求有效。
// 解决post请求乱码问题
req.setCharacterEncoding("UTF-8");
  • req.getParameter() 用于获取单值的参数。
String username = req.getParameter("username");
String password= req.getParameter("password");
String session= req.getParameter("session");
  • req.setAttribute() 在request域中存储数据
//在请求中添加新的数据
req.setAttribute("name",name);
req.setAttribute("age",18);
//请求转发,跳转到hello2
//Dispatcher:分发   forward:转发
req.getRequestDispatcher("/hello2").forward(req,resp);
  • req.getAttribute() 获取域中存储的数据
//从请求中获取数据
String name = (String) req.getAttribute("name");
  • req.getRequestDispatcher() 获取转发器,参数路径以“/”打头,代表当前web项目根目录。
//请求转发,跳转到hello2
//Dispatcher:分发   forward:转发
req.getRequestDispatcher("/hello2").forward(req,resp);
  • req.getContextPath() 返回当前web项目的相对路径。
<a href="<%=request.getContextPath()%>/hello2?method=update&id=<%=test.getId()%>">更新</a>

2、resp

  • resp.setCharacterEncoding() 作用是指定服务器响应给浏览器的编码。
  • resp.setContentType()用于设置内容类型
//设置响应编码
resp.setCharacterEncoding("UTF-8");
//设置内容类型
resp.setContentType("text/html;charset=UTF-8");
  • resp.sendRedirect() 重定向。
//跳转到查询学生的servlet
resp.sendRedirect("/findAllStudents.do");

 

 

 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值