一、简答题
(1)简述Servlet的执行原理
①首先,当服务器接收到浏览器的请求后,会解析url路径
,获得访问Servlet的资源路径;②然后,在web.xml文件的url-pattern标签体中匹配
与之相同的内容;③如果匹配到,就映射
到servlet-class全类名中;④tomcat会将class字节码文件加载进内存
,并创建其对象
;⑤通过对象调用service方法
。
(2)描述Servlet的生命周期
①默认情况下,在Servlet被创建时执行且仅执行一次init()方法,进行加载资源,并创建ServletConfig对象
;②之后,每访问一次servlet,就执行一次service方法;最后,当服务器正常关闭时,执行一次destroy()方法。
Servlet声明周期详解。
(3)简述如何处理表单提交的中文
①前端页面指定字符集:在html/jsp页面的head标签内指定字符集。<meta http-equiv="content-type" content="text/html; charset=UTF-8">
。
②设置请求编码格式:如果是get方式请求,可以在tomcat的servlet.xml文件中配置字符集。如果是post方式,需要手动设置request.setCharacterEncoding("utf-8")
;
③设置响应编码格式:response.setContentType("text/html;charset=utf-8")
;
二、选择题
(1)Servlet获得初始化参数的对象是()
- A、Request
- B、Response
- C、ServletConfig
- D、ServletContext
正确答案:C
在Servlet的生命周期中,执行了初始化init()方法,就会创建ServletConfig对象
。
(2)下列关于HTTP响应代码说法正确的是:(多选)
- A.404错误是因为service方法运行时有错误。
- B.405错误有可能是访问时路径拼写有误。
- C.500错误有可能是web.xml文件中配置错误。
- D . 工程没有部署一定会出现404错误。
正确答案:ABCD
A:404错误,请求路径没有对应的资源
。
B:405错误,请求方式没有对应的doGet/doPost方法
。
C:500错误,服务器内部异常,即service方法中有误
。
D:工程没有部署,无法获得响应状态码
。
(3)可以利用request对象的哪个方法获取客户端的表单信息()
- A. request.getParameter()
- B. request.outParameter()
- C. request.writeParameter()
- D. request.handlerParameter()
正确答案:A
(4)JSP页面中request.getParamter(String )得到的数据,其类型是( )
- A. Double
- B. int
- C. String
- D. Integer
正确答案:C
(5)下面是一个Servlet部署文件的片段:
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>myservlet.example.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/helpHello</url-pattern>
</servlet-mapping>
Servlet的类名是( )
- A.FirstServlet
- B.Hello
- C. helpHello
- D. /helpHello
正确答案:A
三、阅读代码题
(1)阅读下面的代码,说明序号处代码的含义。
public class HelloServlet extends HttpServlet{
public HelloServlet() {
System.out.println(
"HelloServlet的构造器正在执行...");
}
public void service(HttpServletRequest request,
HttpServletResponse response)//-------------①
throws ServletException,IOException{
System.out.println("service方法正在执行...");
String name = request.getParameter("name");
String rs =
"<span style='color:red;font-size:30px;'>" +
"hello " + name +
"</span>";
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();//------------------------②
out.println(rs);//-----------------------------------------------③
out.close();
}
}
解析:
①定义一个类,实现Servlet接口。
②获得字符输出流对象,为发送数据做准备。
③通过字符输出对象发送数据。
(2)阅读下面的代码,说明序号处代码的含义。
public class AddEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");//-----------------------①
double salary = Double.parseDouble(
request.getParameter("salary"));
int age = Integer.parseInt(
request.getParameter("age"));
System.out.println("name:" + name);
System.out.println("salary:" + salary);
System.out.println("age:" + age);
response.setContentType("text/html;charset=utf-8");//---------------②
PrintWriter out = response.getWriter();
out.println("<h1>"+name+"</h1>");
}
}
解析:
①根据参数名name获得参数值,存入变量name中。
②设置响应编码格式为utf-8。
四、编写Servlet在网页上显示当前时间
package com.hudie.web.request;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
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显示当前系统时间
*
* @author qianliangguo
*/
@WebServlet("/Demo")
public class TimeServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获得当前电脑的时间
Date date = new Date(System.currentTimeMillis());
// 格式化时间
SimpleDateFormat time = new SimpleDateFormat("yyyy年MM月dd日-HH:mm:ss");
out.print("当前系统时间为:" + time.format(date));
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(request, response);
}
}