}
}
out.println(\out.println(\
out.println(\out.println(\out.println(\
任务4:简单的综合应用
步骤1:创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。
步骤2:定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。
步骤3:编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击“提交”按钮,请求FirstServlet对其处理。在FirstServlet中使用表单传递的参数(学号和姓名)创建一个Student对象并将其作为属性存储在ServletContext对象中,然后获得通过ServletContext的getRequestDispatcher()方法获得RequestDispatcher()对象,将请求转发到SecondServlet。
步骤4:在SecondServlet中取出ServletContext上存储的Student对象,并显示输出该学生的学号和姓名。在SecondServlet的输出中应该包含一个超链接,点击该连接可以返回input.html页面。
图4.2 input.html页面显示结果 图4.3 SecondServlet显示结果
三. 思考题
1. 如何通过ServletConfig获得Servlet参数?
2. 如何获得ServletContext对象,如何通过该对象获得上下文参数? 3. 如何使用ServletContext共享数据?
3.5 实验五 会话管理
一. 实验目的
1. 了解Web服务器对客户跟踪的各种方法; 2. 重点掌握使用HttpSession对象跟踪会话的方法; 3. 掌握使用Cookie技术跟踪会话的方法; 4. 了解URL重写和隐藏表单域的方法。 Java Web实验指导 75 第 3 章 Java实验指导与习题解析 二. 实验内容 任务1:使用HttpSession对象管理会话。 76 package com.demo; import java.io.*; import javax.servlet.*;
import javax.servlet.http.*; import java.util.Date;
public class ShowSession extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(\
HttpSession session = request.getsession(); ; String heading =null;
Integer accessCount = (Integer)session.getAttribute(\
if(accessCount==null){ accessCount = new Integer(0); heading = \ }else{
heading = \ accessCount = new Integer(accessCount.intValue()+1); }
session.setAttribute(\
PrintWriter out = response.getWriter(); out.println(\
out.println(\ out.println(\
out.println(\
out.println(\ out.println(\
out.println(\ out.println(\ out.println(\
out.println(\ out.println(\
out.println(\ out.println(\ out.println(\ } }
图5.1 ShowSession程序的运行结果
任务2:编写并运行下面的猜数游戏的Servlet。请仔细阅读并理解程序代码。
package com.demo;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
@WebServlet(\
public class GuessNumberServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int magic = (int)(Math.random()*101); HttpSession session = request.getSession(); session.setAttribute(\
response.setContentType(\ PrintWriter out = response.getWriter();
out.println(\
out.println(\我想出一个0到100之间的数,请你猜!\
out.println(\
method='post'>\
out.println(\ out.println(\确定'/>\ out.println(\ out.println(\77 第 3 章 Java Web实验指导 Java实验指导与习题解析 } public void doPost(HttpServletRequest request, 78 HttpServletResponse response) throws ServletException, IOException {
int guess = Integer.parseInt(request.getParameter(\ HttpSession session = request.getSession(); int magic = (Integer)session.getAttribute(\ response.setContentType(\ PrintWriter out = response.getWriter(); out.println(\ if(guess==magic){
session.invalidate(); // 销毁会话对象 out.println(\祝贺你,答对了!\
out.println(\
再猜一次.\
}else if(guess>magic){
out.println(\太大了! 请重猜!\
}else{
out.println(\太小了! 请重猜!\ }
out.println(\
method='post'>\
out.println(\ out.println(\确定'/>\ out.println(\
out.println(\ } }
任务3:使用Cookie跟踪会话
使用Cookie跟踪会话涉及到向客户端写入Cookie和从客户端读取Cookie。 步骤1:向客户端写入Cookie对象
package test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SendCookie extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException{
Cookie userCookie = new Cookie(\ userCookie. setMaxAge(60*60*24*7); response.addCookie(userCookie); response.setContentType(\ PrintWriter out=response.getWriter(); out.println(\ out.println(\
\ out.println(\ } }
访问上述Servlet将向客户端写入一个Cookie,执行后可查看客户机对应目录看是否写了一个文件。
图5.2 SendCookie程序的运行结果
步骤2:从客户端读取Cookie对象
package test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetCookie extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException{ String cookieName = \ String cookieValue = null;
Cookie[] cookies = request.getCookies(); if (cookies!=null){
for(int i = 0;i