1. 第一次加载这个servlet程序时(选择右边的servlet程序,注意servlet程序没有main函数,因此执行的是run as servlet Application ),同时执行init()方法
  2. 然后开始输入servlet网址,注意不用加java或者php,加了反而运行不了,这是会先执行service()方法,在执行doget()方法;
  3. 然后点击计算,开始得到个人所得税部分,这个时候显示执行service()方法,在执行dopost()方法;
  4. 最后,关闭tomcat,执行destory()方法;

init()方法和destory()方法只会执行一次,而service每次都会执行

个人所得税代码

package com.helloweenvsfei.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 LifeCycleServlet extends HttpServlet { private static final long serialVersionUID = -7197419401412129310L; private static double startPoint = 0; @Override
public void init() throws ServletException {
this.log("执行 init() 方法 ... ");
ServletConfig conf = this.getServletConfig();
startPoint = Double.parseDouble(conf.getInitParameter("startPoint"));
} @Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
this.log("执行 service() 方法 ... ");
super.service(arg0, arg1);
} @Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.log("执行 doPost() 方法 ... ");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML><HEAD><TITLE>个人所得税计算</TITLE></HEAD>");
out.println("<link rel='stylesheet' type='text/css' href='../css/style.css'>");
out.println("<BODY>"); out.println("<div align='center'><br/><fieldset style=width:90%><legend>个税计算器</legend><br/>"); try{
// 从参数中获取的工资数目
double income = new Double(request.getParameter("income"));
// 应纳税部分
double charge = income - startPoint;
// 缴税
double tax = 0; if (charge<=0) {tax=0;}
if (charge>0&&charge<=500) {tax=charge*0.05;}
if (charge>500&&charge<=2000) {tax=charge*0.1-25;}
if (charge>2000&&charge<=5000) {tax=charge*0.15-125;}
if (charge>5000&&charge<=20000) {tax=charge*0.2-375;}
if (charge>20000&&charge<=40000) {tax=charge*0.25-1375;}
if (charge>40000&&charge<=60000) {tax=charge*0.30-3375;}
if (charge>60000&&charge<=80000) {tax=charge*0.35-6375;}
if (charge>80000&&charge<=100000) {tax=charge*0.4-10375;}
if (charge>100000) {tax=charge*0.45-15375;} out.println("<div style='line'>");
out.println(" <div class='leftDiv'>您的工资为</div><div class='rightDiv'>" + income + " 元</div>");
out.println("</div>"); out.println("<div style='line'>");
out.println(" <div class='leftDiv'>您应纳税</div><div class='rightDiv'>" + tax + " 元</div>");
out.println("</div><br/>"); out.println("<input type='button' onclick='history.go(-1);' value='纳税光荣 逃税可耻 返回' class=button>"); }catch(Exception e){
out.println("请输入数值类型数据。<input type='button' onclick='history.go(-1);' value='返回' class=button>");
}
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
} @Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.log("执行 doGet() 方法 ... ");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<link rel='stylesheet' type='text/css' href='../css/style.css'>");
out.println("<HTML><HEAD><TITLE>个人所得税计算</TITLE></HEAD>"); out.println("<div align='center'><br/><fieldset style=width:90%><legend>个税计算器</legend><br/>");
out.println("<form method='post' action='LifeCycleServlet'>"); out.println("<div style='line'>");
out.println(" <div class='leftDiv'>您的工资为</div><div align='left' class='rightDiv'><input type='text' name='income'> 单位:元</div>");
out.println("</div><br/>"); out.println("<div style='line'>");
out.println(" <div class='leftDiv'></div><div align='left' class='rightDiv'><input type='submit' value=' 计算个税 ' class=button></div>");
out.println("</div>"); out.println("</form>"); out.println("<BODY>");
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
} @Override
public void destroy() {
this.log("执行 destroy() 方法 ... ");
startPoint = 0;
} }

Java_Web _Servlet生命周期实验的更多相关文章

  1. 【Android实验】第一个Android程序与Activity生命周期

    目录 第一个Android程序和Activity生命周期 实验目的 实验要求 实验过程 1. 程序正常启动与关闭 2. 外来电话接入的情况 3. 外来短信接入的情况 4. 程序运行中切换到其他程序(比 ...

  2. Windows 8 动手实验系列教程 实验5:进程生命周期管理

    动手实验 实验5:进程生命周期管理 2012年9月 简介 进程生命周期管理对构建Windows应用商店应用的开发者来说是需要理解的最重要的概念之一.不同于传统的Windows应用(它们即使在后台仍然继 ...

  3. 【Android归纳】Fragment生命周期-基于实验的最新总结

    如今非常多应用的开发都是基于FragmentActivity中嵌套Fragment进行开发的,所以,假设我们可以清晰地知道他们的生命周期,那么会使我们的开发变的easy. 对于Activity的生命周 ...

  4. TestNG之注解的生命周期

    有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 @BeforeSuite@AfterSuite@BeforeTest@AfterTest@BeforeGroups@AfterGro ...

  5. Activity 和 生命周期: 创建

    了解了整体的android创建流程之后,就分析一下到底这个过程中做了什么? activity创建中开始时由activityStack中的realstartActivityLocked函数中调用了act ...

  6. activity 和 生命周期 :流程

    activity是android的一个基本的组件.讨论生命周期,taskstack等等的话题的时候.就不得不去看一下android framework层的源码了. 生命周期,实际就是系统调用andro ...

  7. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

    一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法 ...

  8. BroadCast Receive 生命周期

    BroadCastReceiver 简介 BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastRecei ...

  9. flex 生命周期 ibm引用

    Flex 本质 提起 Flex 我们不得不追述其发展历史以及两个很重要的名词或者说技术,那就是 Flash 和 Flash Player.Flash 是 Adobe 推出的基于时间轴的交互式矢量图和 ...

随机推荐

  1. Java for循环的几种用法详解

    本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方 ...

  2. 第十三章、学习 Shell Scripts 简单的 shell script 练习

    简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...

  3. iphone练习之手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognizer

    首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下: 往viewController.xib文件里拖动一个imageView,并使覆盖整个 ...

  4. Google maps library的使用

    公司的项目中用到了google地图API, 使用Google API开发就会用到Marker, 用来在google 地图上标注位置 但是google marker使用过程中也有个问题,就是如果在goo ...

  5. mac下烦人的eclipse安装svn插件

    eclipse作为一个鸡肋般的java ide,颇有食之无味弃之可惜之感.最近公司统一对电脑做了一些处理,搞的我的eclipse都不能用了.重新安装了一下,各种maven.svn,代码格式什么的依赖神 ...

  6. hadoop安装详解

    1.hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapRe ...

  7. Ubuntu安装和配置redis

    1.用root用户登录 2.执行 sudo apt-get install redis-server 部分截图

  8. jQuery遍历json

    使用 each var anObject = {one:1,two:2,three:3}; $.each(anObject,function(name,value) { alert(name); al ...

  9. 把sublime添加到右键菜单(转)

    sublime text是前端利器,为了方便,我们把它加入到win7系统的右键菜单(xp不支持) 保存为bat文件,放入sublimetext安装文件夹与sublime_text同级,双击执行即可. ...

  10. SQL Server 性能优化3 该指数(Index)保养

    前言 之前的一篇文章介绍了索引来提高数据库的查询性能,这其实仅仅是个开始.也许假设缺乏适当的保养,索引你以前建立的,甚至成为拖累,成为帮凶下降数据库的性能. 寻找碎片 消除碎片索引维护可能是最常规的任 ...