- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
request.setCharacterEncoding("gb2312");
String snumber = request.getParameter("number");
String sname = request.getParameter("username");
Student stud = new Student(snumber, sname);
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import com.demo.Student;
@WebServlet(name = "firstServlet", urlPatterns = { "/input.do" })
第二章习题答案
1.(C)2.(A)3.(B)
4.问号后面的内容为请求参数名和参数值对,若有多个参数,中间用“&”符号分隔,参数名和参数值之间用等号(=)分隔,问号后面的内容称为查询串(query string),可以通过请求对象的getQueryString()得到查询串的内容。
5.HTTP请求结构由请求行,请求头,消息头,消息体构成;请求行由方法名,请求资源的URI和HTTP版本构成。
out.println("</center>");
out.println("</body></html>");
}
}
运行结果:
(3)使用请求转发可以共享请求作用域中的数据,使用响应重定向可以共享会话作用域中的数据。
10.可以用publicEnumerationgetAttributeNames()枚举的方式来获得请求参数的名称,然后再使用请求对象来存储数据。
11(B)12(C)
13 (E) .(C) (D) (B) (A)
public class SecondServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
import java.io.IOException;
import com.demo.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@WebServlet(name = "secondServlet", urlPatterns = { "/SecondServlet" })
数据不是URL的一部分而是作为请求的消息体发送,在浏览器的地址栏中对用户是不可见的
数据缓存
数据在浏览器的URL历史中缓存
数据不能在浏览器的URL历史中缓存
8.(C)
9.(1)RequestDispatcher对象是请求转发器,他用来把当前请求转发到指定的资源;
(2)响应重定向实际上是服务器向浏览器发送一个特殊的响应头(Location 状态码302),他告诉浏览器连接到新的位置。使用这种方式可以在浏览器的地址栏看到地址的变化。重定向是作为一个新的请求来看待的,因此,所有的请求作用域的参数在重定向到下一个页面都会失效。另外,使用sendRedirect()重定向时,资源不能位于WEB-INF目录中。
package com.demo;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
out.println("<center>");
out.println("学号:" + stud.getSno() + "<br>");
out.println("姓名:" + stud.getName() + "<br>");
out.println("<a href=\"/helloapp/input.html\">返回输入页面</a>");
14.新的URL为:http://www.hacker.com/myapp/foo/stuff.html
15.方法一:覆盖Servlet的init(ServletConfig config),然后把容器创建的ServletConfig对象保存到一个成员变量中;
方法二:在Servlet中直接使用getServletConfig()获得ServletConfig对象。
request.setAttribute("stud", stud);
RequestDispatcher view = request.getRequestDispatcher("/SecondServlet");
vi源自文库w.forward(request, response);
}
}
SecondServlet.java源代码:
6.HTTP响应结构由状态行和状态码,响应头,响应数据构成;其中状态行包括HTTP版本,说明请求结果的响应状态码以及描述状态码的短语。
7.
特征
GET方法
POST方法
资源类型
主动或者被动
主动的
数据类型
文本
文本或者二进制数据
数据量
一般不超过255字节
没有限制
可见性
数据是URL的一部分,在浏览器的地址栏对用户是可见的
<head>
<title>Input here</title>
</head>
<body>
<form action="login.do" method="post">
<table align="center">
<tr>
<td>学号:</td>
<td><input type="text" name="number" /></td>
</tr>
</table>
</form>
</body>
</html>
com.demo.Student源代码:
public class Student {
private int sno;
private String name;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
FirstServlet.java源代码:
package com.demo;
import java.io.*;
public class FirstServlet extends HttpServlet {
ServletContext context;
public void init() {
context = getServletContext();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student stud = (Student) request.getAttribute("stud");
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><body>");
</tr>
<tr>
<td>姓名:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><input type="submit" value="登录" /></td>
<td><input type="reset" value="取消" /></td>
16<load-on-startup>元素指定是否在Web应用程序启动时载入该Servlet。在注解中@WebServlet(loadOnStartup=1)类似这样来指定。
17input.jsp页面:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>