java:Servlet(Create,LifeCycle,ServletWeb.xml文件的配置,交互式,Tomcat文件分析,单例安全模式)
- 客户端发送请求至服务器端;
- 服务器将请求信息发送至 Servlet;
- Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
- 服务器将响应返回给客户端。


package cn.zzsxt.lee.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* @description servlet也是一个普通的Java类 继承了HttpServlet就变的不普通 servlet是什么?-->Java类
* 用于在http协议中,进行数据的传递 干什么用的? 处理客户端发送的请求
* @author Seven Lee
* @date 2017年7月17日下午4:20:30
*
* servlet生命周期:(单例)(!!重要)
* 1.加载并实例化(创建servlet对象)
* 2.初始化(init)(只会被调用一次,第一次访问servlet的时候调用)
* 3.处理客户端的请求并响应(service)
* 4.自动销毁(destroy)(也只会被调用一次,在正常关闭以后会被调用)
*
*/
public class FirstServlet extends HttpServlet {
// 连接数据库,进行把用户的信息存储入数据,并返回用户是否存储成功 @Override
public void init() throws ServletException {
// init方法只会被调用一次,第一此访问servlet的时候会被调用
System.out.println("我是init方法,我被调用了");
} @Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// service方法每发送一次请求就被调用一次
// request-->请求:处理客户端发送到服务器的请求
// response-->响应:处理完请求以后,向客户端进行响应(404, 500...),如果成功200 OK
System.out.println("我是service方法,我被调用了");
// 设置编码格式
request.getRequestDispatcher("index.jsp").forward(request, response);
} @Override
public void destroy() {
// destroy方法也只会被调用一次
// 服务器关闭的时候,客户端关闭连接的时候,处理完所有客户端请求的时候(正常关闭),非正常关闭的情况下是不被调用的
System.out.println("我是destroy方法,我被调用了");
} }
配置web.xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>first_servlet</display-name>
<servlet>
<servlet-name>servlet</servlet-name><!-- servlet-name是随意规定的,没有任何限制,命名规则同样遵循Java的驼峰命名规则 -->
<servlet-class>cn.zzsxt.lee.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name><!-- servlet-mapping中servlet-name要和<servlet>中的一模一样 -->
<!-- <url-pattern>/reg</url-pattern> --><!-- 就是访问servlet的路径,只有通过这个路径才能访问servlet -->
<url-pattern>*.aaa</url-pattern><!-- 以aaa结尾的方式进行匹配servlet -->
<!-- <url-pattern>/ccc/*</url-pattern> --><!-- 以ccc开头来匹配servlet -->
<url-pattern>/*</url-pattern><!-- 所有的路径都要被servlet进行拦截 -->
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> </web-app>
localhost:8080/项目名:查看index.jsp
localhost:8080/项目名/reg(各种访问方式) :通过访问网页对将数据传送到后端控制台
3.Servlet Life Cycle:



package cn.zzsxt.lee.servlet.single; import java.util.UUID; /**
* @description 懒汉模式 特点:当外部调用getInstance方法时,才会被创建对象
* @author Seven Lee
* @date 2017年7月19日上午9:41:34
*
*/
public class LazySingleton extends Single { private static LazySingleton lazySingleton = null; // 首先要把构造方法私有化
private LazySingleton() {
System.out.println("我是懒汉模式,我被创建了" + UUID.randomUUID());
} // 给外部提供获得对象的方法
public static LazySingleton getInstance() {
// double check
if (lazySingleton == null) {// 十个线程看到的对象都为空
synchronized (LazySingleton.class) {// 在这被锁拦住了
if (lazySingleton == null) {// 第一个线程进来了,看到lazySingleton仍然为空
lazySingleton = new LazySingleton();// 就开始创建对象
init("系统加载的配置");
}
}
}
return lazySingleton;
} @Override
protected void service(String method) throws Exception {
// 开始处理请求
System.out.println(Thread.currentThread().getId());
} @Override
protected void destroy() {
System.out.println("请开始你的遗憾");
// 调用gc,给Java虚拟机回应一下,说我快不行了,你赶紧收拾收拾跑路吧
} }
java:Servlet(Create,LifeCycle,ServletWeb.xml文件的配置,交互式,Tomcat文件分析,单例安全模式)的更多相关文章
- 关于web.xml的welcome-file-list 配置与tomcat的关系:
关于web.xml的welcome-file-list 配置与tomcat的关系: 2018年04月18日 10:17:13 守望dfdfdf 阅读数:377 标签: welcome-file-lis ...
- web.xml文件中配置<mime-mapping>下载文件类型
TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不必认为是浏览器的问题,大多数浏览器应该不会死皮赖脸地把二进制文件当作文本打开,一 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- 《Effective Java》 读书笔记(三) 使用私有构造方法或枚举实现单例类
1.单例类到现在为止算是比较熟悉的一种设计模式了,最开始写单例模式是在C#里面,想要自己实现一个单例类,代码如下: public class Instance { private static rea ...
- Java Servlet的配置文件web.xml配置内容和具体含义
文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...
- eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明
context-param.listener.filter.servlet 首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...
- web.xml文件中配置mime下载文件类型(转)
转自:http://5aijava.iteye.com/blog/166600 TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不 ...
- 前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)
前端页面:<form id="kycForm" enctype="multipart/form-data"> <input type=&quo ...
- Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】
static实现的 singleton(单例)设计模式 /** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */ 模板设计结构: package Co ...
随机推荐
- dedecms织梦做中英文(多语言)网站步骤详解
用dedecms织梦程序如何做中英文网站,下面是一个详细的图文教程,希望能帮助到大家. 以下是用dedecms织梦程序制作过的一个5国语言网站,下面开始教程. 一.首先在后台建栏目,有三点需要注意 1 ...
- 【HDU2204】Eddy's爱好
题目大意:求从 1 到 N 中共有多少个数可以表示成 \(M^K,K \gt 1\).\(N \le 1e18\) 题解: 发现 N 很大,若直接枚举 M 的话有 1e9 级别的数据量,肯定超时,因此 ...
- 关于mysql,sqlserverl,与oracle数据库连接总结
首先准备工具类,其中需要修改的地方分别做标注 代码一sqlserver为例,不同数据库只需修改我所标记的第一处和第二处 mysql 第一处应为:com.mysql.jdbc.Driver ...
- python类内置方法的再学习
对于__setitem__和__getitem__方法:其入参看来是固定的(__getitem__(self, item),__setitem__(self, key, value)),我们并不需要重 ...
- js 代码位置不同,导致随着点击函数执行次数累加
每个人书写代码的习惯都不同吃,思想也都不一样,但在工作中为了减少工作量与时间,难免遇到要用别人写的代码.这次在使用同事的代码中,偶然发现的问题,因为js不好,所以一眼也没发现问题所在,查了查网上才知道 ...
- LINUX学习之一基础篇
1.计算机硬件五大单元:运算器.控制器.存储器.I/O设备 2.CPU种类:精简指令集(RISC)和复杂指令集(CISC) 3.1Byte=8bit,扇区大小为512bytes 4.芯片组通常分为两个 ...
- MySQL8.0.18通用版本安装
环境说明: 系统版本:CentOS release 6.8 (Final) MySQL版本:mysql-8.0.18 内存:63G 空间:8T 1 配置本地yum仓库 这个只需要拷贝一个镜像,然后挂载 ...
- JavaScript 输出的四种方法
JavaScript 没有任何打印或者输出的函数. ㈠JavaScript 显示数据 ⑴使用 window.alert() 弹出警告框. ⑵使用 document.write() 方法将内容写到 HT ...
- CGI环境变量
所有的CGI程序都接收以下的环境变量,这些变量在CGI程序中发挥了重要的作用: 变量名 描述 CONTENT_TYPE 这个环境变量的值指示所传递来的信息的MIME类型.目前,环境变量CONTENT_ ...
- Java内存区域与Java内存模型
Java内存区域 Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有其用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有 ...