Servlet相关练习题


一、简答题

(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);
	}

}
	

在这里插入图片描述

发布了348 篇原创文章 · 获赞 923 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/104044876