【JSP】JSP基础学习记录(四)—— Servlet
序:
众所周知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脚本。
package Servlets; import java.io.IOException; import java.io.PrintStream; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; // 此注解中的urlPatterns指定了处理请求的URL @WebServlet(name = "firstServlet", urlPatterns = "/firstServlet") public class FirstServlet extends HttpServlet { @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charSet=utf-8"); PrintStream out = new PrintStream(response.getOutputStream()); out.println("<html><head><title>First Servlet</title></head>"); out.println("<body>"); out.println("<h5>firstServlet</h5>"); out.println("</body></html>"); } }
注: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就越优先实例化。
package Servlets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.swing.Timer; @WebServlet(loadOnStartup = 1, name = "timerServlet") public class ServiceServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub super.init(config); /* 定时器 */ Timer t = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub System.out.println(new Date()); } }); t.start(); } }
<servlet> <servlet-name>timerServlet</servlet-name> <servlet-class>Servlets.ServiceServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
注:不知什么原因在注解上添加loadOnStartup属性后Servlet没有启动,所以在web.xml加上了如上的Servlet配置信息。就可以看到当Tomcat启动后控制台就会每隔1s输出一次当前时间。
尾:
Servlet还可以访问配置文件,与config对象大同小异,就不再写了。今天就到这里,下次记录一下JSP的自定义标签。
【JSP】JSP基础学习记录(四)—— Servlet的更多相关文章
- MVC+Ext.net零基础学习记录(四)
在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在 ...
- MVC+Ext.net零基础学习记录(五)
继MVC+Ext.net零基础学习记录(四),在后面我在既有的项目上又添加了一个子项目,还用前面提到的方法,进行主项目中引用DLL,然后子项目中生成事件中使用mkdir 进行拷贝 发现一个下午就总是报 ...
- JavaScript 基础 学习 (四)
JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 元素.on事件类型 = null 因为赋值的关系,所以给事件赋值为 null 的时候 事件触发的时候,就没有事件处理 ...
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- JavaScript学习记录四
title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 4.VUE前端框架学习记录四:Vue组件化编码2
VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...
- 【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
2.JSP的7个动作指令: 动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作.编译指令在将JSP编译成Servlet时起作用:而处理指令通常可替换成JSP ...
- 【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令
序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java E ...
- leveldb 学习记录(四) skiplist补与变长数字
在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...
随机推荐
- jquery属性选择器(同时匹配多个条件)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Document
每个载入浏览器的 HTML 文档都会成为 Document 对象.Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问.提示:Document 对象是 Window 对象的一 ...
- 使用exe4j打包Java程序
工具: exe4j软件(云盘存) 可以运行的Java程序的jar包 打开我们已经安装好的exe4j软件,首先看到的是一个欢迎界面,我们直接[next]就可以了: 2 在第二步中我们选择[JAR in ...
- Git删除错误提交的commit
git reset --hard <commit_id> git push origin HEAD --force
- 相识不易,要懂珍惜----------Spring Mvc
一.Spring Mvc简介 Spring Mvc也叫Spring Web Mvc,属于表现层额框架.Spring Mvc是Spring框架的一部分,是在Spring3.0后发布的. 二.Spring ...
- jdbc应用程序连接Oracle rac的URL写法:
1.应用程序连接Oracle rac的URL写法: #Oracle(AMS) jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url ...
- ajax的再次封装!
js的动态加载.缓存.更新以及复用 系列有点卡文,放心会继续的.先来点更基础的,为js的加载做点铺垫. jQuery的ajax本来就很方便了,为啥还要在进一步的封装呢?这个首先要看项目的具体需求了,如 ...
- reset
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, ...
- 15款精美的 WordPress 电子商务网站模板
在这篇文章中,我们收集了15款精美的 WordPress 电子商务网站模板.WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装 ...
- 使用异步存储提升 Web 应用程序的离线体验
localForage 是一个 JavaScript 库,通过使用简单的.类似 localStorage 风格的 API 实现异步存储,帮助你提升 Web 应用程序的离线经验(通过 IndexedDB ...