04Servlet的生命周期
Servlet的生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。
<html> <head> <meta content="text/html; charset=UTF-8"> <title>Servlet声明周期</title> </head> <body> <h2>通过POST方式传递参数</h2> <form action="ServletLife" method="POST"> <!-- 通过POST方式传递参数 --> 输入姓名: <input type="text" name="namepost" /> <br> <input type="submit" value="提交"/> </form> <h2>通过GET方式传递参数</h2> <form action="ServletLife" method="GET"> <!-- 通过GET方式传递参数 --> 输入姓名: <input type="text" name="nameget" /> <br> <input type="submit" value="提交"/> </form> </body> </html>
package com.ahabest.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletLife extends HttpServlet {
private static final long serialVersionUID = 6694980741533555810L;
/** 初始化参数. */
private String initParam;
/**
* 初始化.
* @param config 初始化参数
* @throws Servlet异常
*/
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("===初始化Servlet===");
// 获得初始化参数并打印出来
initParam = config.getInitParameter("sayhello");
System.out.println("我们获得的初始化参数是:" + initParam);
}
/**
* service方法使用.
* @param req Request
* @param resp Response
* @throws ServletException Servlet异常
* @throws IOException IO异常
*/
@Override
protected void service(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
System.out.println(
"正在执行service方法,调用父类对应的方法,当前提交方式:"
+ req.getMethod());
super.service(req, resp);
}
/**
* doGet方法使用.
* @param req Request
* @param resp Response
* @throws ServletException Servlet异常
* @throws IOException IO异常
*/
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
// 设置Request参数编码
req.setCharacterEncoding("UTF-8");
// 获得页面传递过来的参数
String nm = req.getParameter("nameget");
// 获得初始化参数字符串
nm = "通过GET方法获得的:" + nm + " , " + initParam;
// 设定内容类型为HTML网页UTF-8编码
resp.setContentType("text/html;charset=UTF-8");
// 输出页面
PrintWriter out = resp.getWriter();
out.println("<html><head>");
out.println("<title>Servlet Life</title>");
out.println("</head><body>");
out.println(nm);
out.println("</body></html>");
out.close();
System.out.println("正在执行doGet方法,页面会显示文字:" + nm);
}
/**
* doPost方法使用.
* @param req Request
* @param resp Response
* @throws ServletException Servlet异常
* @throws IOException IO异常
*/
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
// 设置Request参数编码
req.setCharacterEncoding("UTF-8");
// 获得页面传递过来的参数
String nm = req.getParameter("namepost");
// 获得初始化参数字符串
nm = "通过POST方法获得的:" + nm + " , " + initParam;
// 设定内容类型为HTML网页UTF-8编码
resp.setContentType("text/html;charset=UTF-8");
// 输出页面
PrintWriter out = resp.getWriter();
out.println("<html><head>");
out.println("<title>Servlet Life</title>");
out.println("</head><body>");
out.println(nm);
out.println("</body></html>");
out.close();
System.out.println("正在执行doPost方法,页面会显示文字:" + nm);
}
/**
* 销毁Servlet实例.
*/
@Override
public void destroy() {
System.out.println("===销毁Servlet实例===");
super.destroy();
}
}
<?xml version="1.0" encoding="gb2312"?>
<web-app>
<welcome-file-list>
<welcome-file>ServletLife.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletLife</servlet-name>
<servlet-class>com.ahabest.servlet.ServletLife</servlet-class>
<init-param>
<param-name>sayhello</param-name>
<param-value>你好啊!</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletLife</servlet-name>
<url-pattern>/ServletLife</url-pattern>
</servlet-mapping>
</web-app>
04Servlet的生命周期的更多相关文章
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)
本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...
- UIViewController生命周期-完整版
一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load (NSObje ...
- angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation
今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
- Autofac - 生命周期
实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...
- 【微信小程序开发•系列文章六】生命周期和路由
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...
- Xamarin.Android活动的生命周期
一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...
随机推荐
- android深入之设计模式(一)托付模式
(一)托付模式简单介绍 托付模式是主要的设计模式之中的一个.托付.即是让还有一个对象帮你做事情. 更多的模式,如状态模式.策略模式.訪问者模式本质上是在更特殊的场合採用了托付模式. 托付模式使得我们能 ...
- SEO 搜索引擎优化培训01
百度搜索风云榜:http://top.baidu.com/boards 页面上的因素:对搜索引擎而言
- JavaScriptSerializer 序列号datatime时少了8小时
有人说主要的因素是在于JSON格式不直接支持日期和时间. 简单一点处理办法是ToLocalTime()一下:dt = dt.ToLocalTime(); 参考http://blog.csdn.net/ ...
- iOS开发——swift——swift与OC之间不得不知道的21点
swift与OC之间不得不知道的21点 自6月的WWDC大会上由苹果的大神Chris Lattner向我们首次展示swift至今已经大半年时间了,虽然绝大部分软件公司代码里还都见不到一丁点swif ...
- mysql group by 组内排序 group by 原理
mysql group by 组内排序 SELECT * FROM (SELECT MAX(id) AS t,wukong_uid, 1 AS tag FROM toutiao_uid_gath ...
- 自定义Notification实现例子
1.自定义view: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...
- 洛谷 P1131 [ ZJOI 2007 ] 时态同步 —— 树形DP
题目:https://www.luogu.org/problemnew/show/P1131 记录 x 子树内同步的时间 f[x],同步所需代价 g[x]: 直接转移即可,让该儿子子树与其它儿子同步, ...
- POJ1265 Area 多边形内格点数 Pick公式
POJ1265给定一个多边形 计算边上的格点 内部的格点 以及多边形的面积 利用Pick公式 面积=内部格点数+边上格点数/2-1 将多边形分割为三角形容易证得上述公式 计算面积用叉积,计算边上格点 ...
- ECS服务器配置密钥登录及常用日志
一.介绍 1.SSH(22端口)是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定:在进行数据传输之前,SSH先对联机数据包通 ...
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...