request对象 request对象和response对象都是由服务器创建的,我们是来使用他们 request对象是用来获取请求消息的,response对象是用来设置响应消息的
1. 获取请求消息数据 1. 获取请求行数据
什么是请求转发? 请求转发是服务器内部资源跳转的一种方式 步骤
2. 特点:
代码 这个案例是以index.jsp页面向Servletimp请求,然后Servletimp跳转到Bservlet
Servletimp
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Servletimp")
public class Servletimp extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/Bservlet");
requestDispatcher.forward(req,resp);
System.out.println("Servletimp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req,resp);
}
}
Bservlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Bservlet")
public class Bservlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("Bservlet");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
<%--
Created by IntelliJ IDEA.
User: 86151
Date: 2020/7/29
Time: 11:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<FORM action="/Servletimp" method="post">
<input name="username">
<input type="submit" value="提交">
</FORM>
</body>
</html>
我们先来了解什么是域对象? 域对象:一个有作用范围的对象,可以在范围内共享数据 request:代表一次请求的范围,一般用于请求转发中多个资源的共享数据
方法
获取ServletContext ServletContext getServletContext
简单的代码实现
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Servletimp")
public class Servletimp extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/Bservlet");
req.setAttribute("id",1);//存入键名为id值为1的数据
requestDispatcher.forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Bservlet")
public class Bservlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
Object id = req.getAttribute("id");//获取键名为id的键值
System.out.println(id);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}