修炼Servlet
修炼Servlet
一、Servlet简单认识
1、Servlet是什么
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,我们可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
2、Servelet构架
借鉴与W3C,显示servlet在web应用程序中的位置
3、Servlet主要任务
- 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
- 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
- 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
- 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
- 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
4、Servlet涉及的包
Servlet 可以使用 javax.servlet 和 javax.servlet.http 包创建
二、Servlet生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。
以下是 Servlet 遵循的过程:
(1)、Servlet通过调用init ()方法进行初始化。
(2)、Servlet调用service()方法来处理客户端的请求。
(3)、Servlet通过调用destroy()方法终止(结束)。
(4)、最后Servlet由JVM的垃圾回收器进行垃圾回收的。
1、init()方法
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。知道这一点即可。
看一下定义:
public void init() throws ServletException {
//初始化代码
}
2、service()方法
service 是执行实际任务的主要方法 ,用来处理来自客户端的请求,并把格式化的响应写回给客户端。会在适当的时候调用 doGet、doPost、doPut,doDelete 等方法 。
看一下定义:
public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException{
}
上面说到会去调用一些方法,所以,我们不用对 service() 方法做任何动作,只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。
①doGet()方法:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// Servlet 代码
}
doGet 请求来自于一个 URL 的正常请求,或者未指定 METHOD 的 HTML 表单 .
②doPost()方法:
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// Servlet 代码
}
doPost请求来自于一个特别指定了METHOD 为 Post的 HTML 表单
3、destroy()方法
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用 。 一般会使Servlet关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
看一下定义:
public void destroy() {
// 终止化代码...
}
三、Servlet简单实例
来个最原始的 Servlet 输出 Hello World
写在前面,我用的IDEA创建了一个web项目,在写Servlet时可能没有javax.servlet和javax.servlet.http包,该怎么办呢?很好解决,File->Project Structure->Library->上面会有一个java,点击后出现New Project Library,我们选择java,然后去我们的tomcat目录下找到lib\servlet-api.jar导入即可。
开始代码模式了!
package wzm;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet {
private String message;
@Override
public void init() throws ServletException {
message="Hello World";
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
//设置响应内容
response.setContentType("text.html");
//实际逻辑
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
@Override
public void destroy() {
//nothing
}
}
这里只是熟悉一遍Servlet周期
四、IDEA部署Servlet
1、方法一:web.xml
在WEB-INF目录下web.xml文件的 web-app标签中添加如下内容:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>wzm.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
2、方法二:注解法
在HelloWorld文件的类前面加上:@WebServlet("/HelloWorld")
Servelet应该仍是web的核心,在这里大体知道它是如何工作的,并知道service的一些方法使用就好。
修炼Servlet的更多相关文章
- Servlet JSP 二重修炼:Filter过滤器
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 真正的朋友就是,当你蒙蔽了所有人的眼睛,也能看穿你真实的样子和心底的痛楚 ...
- J2EE修炼之四书五经[转自2004年程序员]
J2EE修炼之四书五经 作者:彭晨阳 J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术.当然,如何在这种气势如虹的潮流之中不至于迷失方 ...
- JSP、servlet、SQL三者之间的数据传递
JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发 前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记, ...
- servlet文件下载
创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...
- java中servlet的各种路径
1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...
- Servlet监听器笔记总结
监听器Listener的概念 监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...
- JavaWeb——Servlet
一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...
- servlet 简介,待完善
什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
随机推荐
- 清除router路由后面的参数
清除router参数: 1.this.$router.push({ query: {}}) 2.var path = this.$route.path; //获取路由路径 this.$route ...
- Pikachu靶场通关之XSS(跨站脚本)
一.XSS(跨站脚本)概述 Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XSS可以 ...
- mysql 优化的相关配置:总结中...
centos 为例:mysql 怎么获取配置参数信息: /etc/my.cnf; /etc/myql/my.cnf/; 家目录:或者指定目录:作用域 客户端:全局 set global 会话 set[ ...
- PHP 合并2个链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. <?php class ListNode{ var $val; var $next = NULL; ...
- 安装redis3.0.5
首先在官网下载redis-3.0.5.tar.gz 在某一个要安装redis的目录下输入命令 tar xzf redis-3.0.5.tar.gz 实现解压缩 进入解压缩后的redis目录 输入mak ...
- P4351-[CERC2015]Frightful Formula【组合数学,MTT】
正题 题目链接:https://www.luogu.com.cn/problem/P4351 题目大意 \(n*n\)的矩形,给出第一行和第一列的数,剩下的满足\(F_{i,j}=a*F_{i,j-1 ...
- P3649-[APIO2014]回文串【PAM】
正题 题目链接:https://www.luogu.com.cn/problem/P3649 题目大意 一个字符串,求最大的回文串长度×出现次数 解题思路 构建出\(\text{PAM}\)然后统计一 ...
- CF757F-Team Rocket Rises Again【最短路,DAG支配树】
正题 题目链接:https://www.luogu.com.cn/problem/CF757F 题目大意 \(n\)个点\(m\)条边的一张无向图,求删除\(s\)以外的一个点改变\(s\)到最多点的 ...
- IE浏览器报400错误:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
前言: 在用IE浏览器时访问tomcat项目时,页面报400错误,后台错误: java.lang.IllegalArgumentException: Invalid character found i ...
- 淘宝商品html--网页结构
淘宝商品html--网页结构 本篇爬虫紧接上一篇关于 泸州老窖 的爬虫随笔: import re import json def get_space_end(level): return ' ' * ...