【测一测】 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1、请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用。 2、简述ServletContext接口的三个主要作用。 3、编写一个servlet,实现统计网站被访问次数的功能。 4、请编写一段程序,使程序能读取该servlet的配置信息,从中获得参数名为encoding对应的参数值,并输出到页面上。
【答案】 1、Servlet接口中有init、service、destroy 、getServletConfig和getServletInfo这 5个方法,这些方法的特点及其作用具体如下:
init(ServletConfig config)方法,该方法在服务器对Servlet第一次访问时调用,负责Servlet初始化工作。在一个Servlet的生命周期中只执行一次。该方法接收一个ServletConfig类型的参数,Servlet容器可以通过这个参数向Servlet传递初始化配置信息。service(ServletRequest request,ServletResponse response)方法,该方法负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。destroy()方法,该方法方法负责释放Servlet对象占用的资源。当Servlet对象被销毁时,容器会调用此方法。getServletConfig()方法,该方法返回容器调用init(ServletConfig config)方法时传递给Servlet的ServletConfig对象。getServletInfo()方法,该方法返回一个字符串,其中包含了关于Servlet的信息,例如,作者、版本和版权等信息。2、ServletContext接口的三个主要作用如下: 1)获取Web应用程序的初始化参数 2)实现多个Servlet对象共享数据 3)读取Web应用下的资源文件
3、实现步骤如下: 1)新建一个类ShowTimesServlet继承HttpServlet,重写doGet和doPost方法 2)在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次Servlet,使访问次数times加1 3)获取ServletContext,通过它的功能记住上一次访问后的次数 (1)ShowTimesServlet类的编写如下:
public class ShowTimesServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = getServletContext(); Integer times = (Integer) context.getAttribute("times"); if (times == null) { times = new Integer(1); } else { times = new Integer(times.intValue() + 1); } //设置编码,不然中文会变成乱码 resp.setContentType("text/html;charset=GB2312"); //得到输出流对象 PrintWriter out=resp.getWriter(); out.println("<html><head><title>"); out.println("页面访问统计"); out.println("</title></head><body>"); out.println("当前页面被访问了"); out.println("<font color=red size=20>"+times+"</font>次"); //设置属性,将times保存到当前的上下文中 context.setAttribute("times",times); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }(2)web.xml配置信息如下:
ShowTimesServlet cn.itcast.chapter03.servlet.ShowTimesServlet ShowTimesServlet /ShowTimesServlet4、实现代码如下: (1)TestServlet类如下:
public class TestServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); // 获得ServletConfig对象 ServletConfig config = this.getServletConfig(); // 获得参数名为encoding对应的参数值 String param = config.getInitParameter("encoding"); out.println("encoding=" + param); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }(2)web.xml文件配置如下:
<servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>cn.itcast.chapter03.servlet.TestServlet</servlet-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/TestServlet</url-pattern> </servlet-mapping>整理不易, 如果对你产生了帮助, 请给博主一个赞哦, 大家的点赞是我创作的最大动力。