HTTP请求与响应对象

本文介绍了Servlet中处理HTTP请求与响应的方法,包括通过HttpServletRequest获取请求参数,显示所有请求头,使用RequestDispatcher进行请求转发,创建带数据的Excel电子表格,以及响应重定向的应用。详细阐述了每个步骤的实现,如表单参数传递,请求头的检索,以及在Servlet间共享数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理

对客户的请求,容器根据请求调用Servlet的相应doXxx()方法,该方法带有两个参数,一个是HttpServletRequest,一个是HttpServletResponse,它们分别表示请求对象和响应对象,它们是容器自动创建的两个对象。可以使用这两个接口定义的若干方法完成有关操作。

对Servlet的请求目的是要获得响应消息。Servlet要向用户发送响应数据首先要获得输出流对象。另外,通过响应对象还可向客户端发送状态码,也可以设置有关响应头,还可以对响应重定向。

1. 编程实现通过表单传递请求参数,使用HttpServletRequest对象获得请求参数。

【步骤1】编写CourseSelect.html页面,存放在ch02项目的目录中。该页面在屏幕上显示一个表单,其中包括姓名输入框和选择课程的下拉列表,点击“确定”按钮后,将表单提交给CourseServlet处理并显示选课结果。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
<form action="CourseSelect" method="POST" >
    姓名:
    <input type="text" name="names"/>
    课程选择框:
    <select name="option1">
        <option >数学</option>
        <option >语文</option>
        <option  >英语</option>
    </select>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

在这里插入图片描述
【步骤2】编写CourseServlet.java,读取表单请求参数的值并显示选课人姓名和选择的课程。

package edu.exp.no_1;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CourseSelect
 */
@WebServlet("/CourseSelect")
public class CourseSelect extends HttpServlet implements Servlet {
   
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public CourseSelect() {
   
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out=response.getWriter();
        String title="读取数据表单";
        String docType="<!doctype html public \"-//w3c//dtd html 4.0 " +
                "transitional//en\">\n";
        out.println(docType+
                "<html>\n" +
                "<head><meta charset=\"utf-8\"><title>"+title+"</title></head>\n"+
                "<body><table width=\"200\" border=\"1\">\n"+
                "<tr><td>姓名</td><td>所选课程</td></tr>\n"
        );

        String paraName=request.getParameter("names");
        out.println("<tr><td>"+paraName+"</td>\n");
        String paraName1=request.getParameter("option1");
        out.println("<td>"+paraName1+"</td>\n");

        out.print("</tr>");
        out.println("\n</table>\n</body></html>");


    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

【步骤3】在web.xml文件中部署CourseServlet。

   <servlet>
       <servlet-name>CourseSelect</servlet-name>
       <servlet-class>edu.exp.no_1.CourseSelect</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>CourseSelect</servlet-name>
       <url-pattern>/CourseSelect</url-pattern>
   </servlet-mapping>

【步骤4】在浏览器的地址栏中输入:http://localhost:8080//CourseSelect, 然后在表单中输入数据,点击“确定”按钮,体会表单参数的传递与访问方法。
在这里插入图片描述

2. 编写一个Servlet,显示所有请求头

【步骤1】在exp02项目下编写一个名为ShowHeadersServlet.java的Servlet程序,使其能够检索所有的请求头,并且能够以表格的形式将请求头的参数名和参数值显示出来。
【步骤2】在web.xml文件中部署该Servlet,具体内容如下:

<servlet>
        <servlet-name>ShowHeadersServlet</servlet-name>
        <servlet-class>edu.exp.no_2.ShowHeadersServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ShowHeadersServlet</servlet-name>
        <url-pattern>/showheaders</url-pattern>
</servlet-mapping>

【步骤3】在浏览器地址栏中输入正确的URL,访问并测试该Servlet。

package edu.exp.no_2;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值