码迷,mamicode.com
首页 > Web开发 > 详细

【JSP】JSP基础学习记录(四)—— Servlet

时间:2015-11-22 18:44:34      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

 序:

  众所周知JSP的基础也就是Servlet,如果单纯用Servlet类来响应用户的HTTP请求可以吗?答案是肯定的。JSP中的9个内置对象只是自动帮我们初始化的,没有他们一样可以实现web。只是工作量繁琐度的问题。

 

 4.1、第一个Servlet:

  首先:需要新建一个继承自HttpServlet的子类。并且重写public void service(ServletRequest request, ServletResponse response)方法。此方法用来接收所有方式的HTTP请求,doGet与doPost则分别为接收用户的GET请求与POST请求。

  其次:给此类添加注解,用指定处理那个URL发来的请求。

  最后:Response给用户响应HTML脚本。

 1 package Servlets;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintStream;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.ServletRequest;
 8 import javax.servlet.ServletResponse;
 9 import javax.servlet.annotation.WebServlet;
10 import javax.servlet.http.HttpServlet;
11 
12 // 此注解中的urlPatterns指定了处理请求的URL
13 @WebServlet(name = "firstServlet", urlPatterns = "/firstServlet")
14 public class FirstServlet extends HttpServlet {
15 
16     @Override
17     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
18         // TODO Auto-generated method stub
19         request.setCharacterEncoding("utf-8");
20         response.setContentType("text/html;charSet=utf-8");
21 
22         PrintStream out = new PrintStream(response.getOutputStream());
23         out.println("<html><head><title>First Servlet</title></head>");
24         out.println("<body>");
25         out.println("<h5>firstServlet</h5>");
26         out.println("</body></html>");
27     }
28 }

  技术分享

 

  注:Servlet中没有内置对象,原来JSP中的内置对象都必须由程序显示创建。对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出。

  

 4.2、Servlet的配置:

  为了让Servlet能响应用户请求,还必须将Servlet配置在Web应用中。配置Servlet时,需要修改web.xml文件。

  从Servlet3.0开始,配置Servlet有两种方式。

    (1)在Servlet类中使用@WebServlet注解进行配置。

    (2)通过在web.xml文件中进行配置。

  

  使用@WebServlet时可以置顶如下常用属性:

    属性            是否必须            说明

    asyncSupported      否               置顶该Servlet是否支持一步操作模式。

    displayName         否               置顶该Servlet的显示名

    initParams          否               用于为该Servlet配置参数

    loadOnStartup        否                用于将该Servlet配置成load-on-startup的Servlet

    name            否                置顶该Servlet的名称

    urlPatterns/value        否               这两个属性的作用完全相同。都制定该Servlet处理的URL

  

  注:如果打算使用注解来配置Servlet,首先不要在web.xml文件的根元素(web-app)中置顶metadata-complete="true"。其次不要在web.xml文件中配置该Servblet。如果打算使用web.xml文件来配置该Servlet,则需要配置如下两个部分。

    (1)配置Servlet的名字:对应web.xml文件中的<servlet/>元素

    (2)配置Servlet配置URL:对应web.xml文件中的<servlet-mapping/>元素。这一步是可选的。但如果没有为Servlet配置URL,则该Servlet不能响应用户请求。

 

 4.3、load-on-startup Servlet:

  创建Servlet实例有两个时机:用户请求之时或应用启动之时。应用启动就创建Servlet,通常是用于某些后台服务的Servlet,或者需要拦截很多请求的Servlet;这种Servlet通常作为应用的基础Servlet使用,提供中还要的后台服务。

  配置load-on-startup的Servlet有两种方式。

    (1)在web.xml文件中通过<servlet/>元素的<load-on-startup/>子元素进行配置。

    (2)通过@WebServlet注解的loadOnStartup属性指定。

  注:<load-on-startup/>元素或loadOnStartup属性都只接收一个整型值,这个整型值越小,Servlet就越优先实例化。

 1 package Servlets;
 2 
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 import java.util.Date;
 6 
 7 import javax.servlet.ServletConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.annotation.WebServlet;
10 import javax.servlet.http.HttpServlet;
11 import javax.swing.Timer;
12 
13 @WebServlet(loadOnStartup = 1, name = "timerServlet")
14 public class ServiceServlet extends HttpServlet {
15 
16     @Override
17     public void init(ServletConfig config) throws ServletException {
18         // TODO Auto-generated method stub
19         super.init(config);
20         /* 定时器 */
21         Timer t = new Timer(1000, new ActionListener() {
22 
23             @Override
24             public void actionPerformed(ActionEvent e) {
25                 // TODO Auto-generated method stub
26                 System.out.println(new Date());
27             }
28 
29         });
30         t.start();
31     }
32 
33 }
1 <servlet>
2     <servlet-name>timerServlet</servlet-name>
3     <servlet-class>Servlets.ServiceServlet</servlet-class>
4     <load-on-startup>1</load-on-startup>
5 </servlet>

  注:不知什么原因在注解上添加loadOnStartup属性后Servlet没有启动,所以在web.xml加上了如上的Servlet配置信息。就可以看到当Tomcat启动后控制台就会每隔1s输出一次当前时间。

  技术分享

 

 尾:

  Servlet还可以访问配置文件,与config对象大同小异,就不再写了。今天就到这里,下次记录一下JSP的自定义标签。

【JSP】JSP基础学习记录(四)—— Servlet

标签:

原文地址:http://www.cnblogs.com/clownhome/p/4986336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!