Web实验一 Servlet技术与应用

一. 实验预习内容

1.Web页面中都可以使用哪些方式来发送HTTP请求?

答:(1)用户在浏览器的地址栏中输入URL并按回车键;
(2)用户点击了HTML页面中的超链接;
(3)用户在HTML页面中添写一个表单并提交.

2.GET与POST两种请求方式有什么区别?分别适用于什么情况?

答:(1)GET方法用来检索资源.它的含义是”获得由该URI标识的资源”.GET方法请求的资源通常是静态资源.使用GET也可以请求动态资源,但一般要提供少量的请求参数.
(2)POST方法用来向服务器发送需要处理的数据,它的含义是”将数据发送到由该URI标识的动态资源”.

3.HTTP响应内容的类型都有哪些?如何设置HTTP响应内容的类型?

答:(1)类型有:
1)public PrintWriter getWriter():返回一个PrintWriter对象用于向客户发送文本数据.
2)public ServletOutStream getOutputStream() throws IOException:返回一个输出流对象,它用来向客户发送二进制数据.
3)public void setContentType(String type):设置发送到客户端响应的MIME内容类型.
(2)设置方法:
设置响应数据内容类型应该使用相应对象的setContentType(),如果没有调用该方法,内容类型将使用默认值text/html,即HTML文档.
可以调用响应对象response的setCharacterEncoding()设置响应的字符编码.如果没有指定响应的字符编码,PrintWriter将使用ISO-8859-1编码.
如果不使用默认的响应的内容类型和字符编码,应该先调用响应的setContentType(),然后再调用getWriter()或getOutputStream()获得输出流对象.

4.什么是ServletContext对象,它的生存周期如何?

答:Web容器在启动时会加载每个Web应用程序,并为每个Web应用程序创建一个唯一的ServletContext实例对象,该对象称为Servlet上下文对象。
ServletContext是一个作用域对象,使用它可以存储数据,它的作用域是整个应用程序。

5.ServletContext与ServletRequest的getRequestDispatcher()方法有什么区别?

答:区别是:对ServletContext的getRequestDispatcher()只能传递以”/”开头的路径,而对ServletRequest的getRequestDispatcher(),可以传递一个相对路径.

二.实验内容和步骤

1. 简单的综合应用,掌握Servlet将请求转发给另一个Servlet的方法。

【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body style="text-align:center;">
<form action="FirstServlet" method="post">
<p>	学号:<input type="text" name="sno" size="20"></p>
<p>姓名:<input type="text" name="name" size="20"></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="登录"/>
&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="取消"/>
</form>
</body>
</html>

【步骤2】 定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。
package com.demo;

package com.demo;

public class Student {
   
	private String sno;
	private String name;
	public void setSno(String sno) {
   
		this.sno = sno;
	}
	public String getSno() {
   
		return sno;
	}
	public String getName() {
   
		return name;
	}
	public void setName(String name) {
   
		this.name = name;
	}
	public Student(String sno,String name) {
   
		this.sno = sno;
		this.name = name;
	}
}


【步骤3】编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击“提交”按钮,请求FirstServlet对其处理。在FirstServlet中使用表单提交的请求参数(学号和姓名)创建一个Student对象并将其作为属性存储在请求作用域中,然后通过请求对象的getRequestDispatcher()方法获得RequestDispatcher()对象,将请求转发到SecondServlet。

package com.demo;


import java.io.IOException;

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;

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

    /**
     * Default constructor. 
     */
    public FirstServlet() {
   
        // 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
		String sno=request.getParameter("sno");
		String name=request.getParameter("name");
		Student student = new Student(sno,name);
		request.setAttribute("student", student);
		RequestDispatcher rd = request.getRequestDispatcher("/SecondServlet");
		rd.forward(request, response);
	}

	/**
	 * @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);
	}

}


package com.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax
  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值