1.(多选)HttpServletResponse对象的setContentType方法的作用( )
A:设置response对响应体使用的码表
B:通知浏览器使用指定的码表去解码
C:设置servlet使用的码表
D:设置request对获取请求参数使用的码表
参考答案:A,B
答案解析:
content-type设置的是response使用的码表,通知浏览器使用指定的码表去解码,并不是设置servlet使用的码表,request设置获取请求参数使用码表是使用request.setCharacterEncoding(String enc);这种方式
2.(单选)下面关于servletContext理解正确的是( )
A:一个web项目可以创建多个不同的ServletContext对象
B:每次访问项目时都会创建一个ServletContext对象
C:ServletContext对象在项目启动时就会创建
D:ServletContext可以接收浏览器访问时携带的参数
参考答案:C
答案解析:
一个web项目有且仅有一个ServletContext对象。浏览器每次访问时都会创建一个Request对象,而不是ServletContext。ServletContext在项目启动的时候会创建。Request才能获取浏览器访问时携带的参数。
3.说出①②③④的结果
@WebServlet(name="demo",urlPatterns= "/demo")
public class Demo extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
ServletContext demo1 = this.getServletContext();
demo1.setAttribute("testName", "testValue"); ①
System.out.println(demo1.getAttribute("testName")); ②
}
@WebServlet("/demo2")
public class Demo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
ServletContext demo2 = getServletContext();
System.out.println(demo2.getAttribute("testName")); ③
demo2.removeAttribute("testName");
System.out.println(demo2.getAttribute("testName")); ④
}
解析:
①给demo1添加了一个属性testName,值为testValue;
②输出demo1属性testName的值,输出结果:testValue;
③输出demo2属性testName的值,输出结果:testValue;
④会报错,因为testName属性已经被删除,获取不到testName;