前情提要:

  • 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");

 

 

 



 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐