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 ...
随机推荐
- mysql数据库表自增ID批量清零 AUTO_INCREMENT = 0
mysql数据库表自增ID批量清零 AUTO_INCREMENT = 0 #将数据库表自增ID批量清零 SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' AUT ...
- Windows KMS激活脚本
@echo off&setlocal EnableDelayedExpansion&color 3etitle Windows KMS激活脚本 --by David :: 如果激活失败 ...
- UML(Rational Rose)安装教程【载百度经验】
---恢复内容开始--- Win7安装rational rose2007教程 在UML建模的众多工具中,IBM公司的rational rose建模工具可以说是最好用的建模工具了.哪我们又该如何在win ...
- mybatis之联表查询
今天碰到了一个问题,就是要在三张表里面各取一部分数据然后组成一个list传到前台页面显示.但是并不想在后台做太多判断,(因为涉及到for循环)会拉慢运行速度.正好用的框架是spring+springM ...
- 《剑指offer》算法题第四天
今日题目: 二进制中1的个数 数值的整数次方 调整数组顺序使奇数位于偶数前面 链表中倒数第K个节点 链表中环的入口节点 今天的题目都比较简单,但是前三道题都有不同的解法,4,5两题就不在这边讨论了,其 ...
- hdu 5695 百度熊教体育 拓扑排序 好题
Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- SpringBoot整合Elastic-job(详细)
一 作业分片1.分片概念作业分片是指任务的分布式执行,需要将一个任务拆分为多个独立的任务项,然后由分布式的应用实例分别执行某一个或几个分片项.例如:Elastic-Job快速入门中文件备份的例子,现有 ...
- 【BZOJ4456】 [Zjoi2016]旅行者 / 【UOJ #184】 【ZJOI2016】旅行者
Description 小Y来到了一个新的城市旅行.她发现了这个城市的布局是网格状的,也就是有n条从东到西的道路和m条从南到北 的道路,这些道路两两相交形成n×m个路口 (i,j)(1≤i≤n,1≤j ...
- AtCoder AGC036C GP 2 (组合计数)
题目链接 https://atcoder.jp/contests/agc036/tasks/agc036_c 题解 终于有时间补agc036的题了. 这题其实不难的来着--我太菜了考场上没想出来 首先 ...
- linux下安装R
下载 版本:R3.2.2 下载地址:http://cran.rstudio.com/src/base/R-3/R-3.2.2.tar.gz 安装步骤: 解压 tar -zxvf R-3.2.2.tar ...