javaWEB总结(1):第一个servlet程序
1.新建一个javaWeb工程,工程的目录如下
2.在com.dao.chu的包下新建一个HelloServlet.java类
package com.dao.chu; import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; /**
*
* Title: HelloServlet
* Description:实现Servlet接口的类
* </p>
*/
public class HelloServlet implements Servlet { @Override
public void destroy() {
System.out.println("destroy...");
} @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig...");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo...");
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init..."); } @Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service..."); } public HelloServlet() {
System.out.println("HelloServlet's constructor..");
} }
3.修改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"> <!-- 配置和映射servlet -->
<servlet>
<!-- servlet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.dao.chu.HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<!-- 需要和某一个servlet子节点的servlet-name 子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!-- 映射的具体访问路径:/代表当前WEB应用的根目录 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
4.运行tomcat后,并且访问web.xml中所配的servlet访问地址,控制台打印结果:
5.每刷新请求一次页面,控制台便多输出一个“service...”,刷新两次,共输出三次service:
6.当停掉tomcat之后,控制台多输出了一个“destroy..”
总结:
一.web应用的跟路径
1.web.xml中的/hello,中的“/”是当前web应用的跟路径,本次访问的路径为http://localhost:7001/javaWeb_01/hello,
而web.xml中的“/”就相当于“http://localhost:7001/javaWeb_01/”;
二.servlet中有关生命周期的四个方法
1.构造器:只被调用一次,只有第一次请求servlet时,创建servlet实例,调用构造器,这说明servlet是单例的;
2.init方法:只被调用一次,在创建好实例后立即被调用,用于初始化当前的servlet;
3.service方法:被调用多次,每次请求都会调用service,实际用于处理请求;
4.destroy方法:只被调用一次,在当前servlet所在的WEB应用被卸载前被调用,用于释放当前servlet所占用的资源;
三.以上四个方法都由servlet容器自动调用。
跳过一些坑:
1.创建工程后没有web.xml的问题
新建一个动态web工程,不要点击finish,一直点击next,最后如图勾选即可。
2.控制台没有打印destroy..的问题
(1)不要关闭控制台的停止按钮,而要关闭tomcat的stop按钮,如果是控制台的按钮 那就相当于服务器断电,当然看不到打印信息,关闭server中的按钮才是调用
tomcat中的shutdown.
(2)不过还看不到打印信息就就用debug模式,在输出destroy的地方打断点。
以上坑是本人测试时候遇到,定是不很全面。
为了尊重原作者,下面粘贴佟刚老师视频的地址:
javaWEB总结(1):第一个servlet程序的更多相关文章
- Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中
以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...
- Servlet快速入门:第一个Servlet程序
Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...
- 动手学servlet(一) 第一个servlet程序
1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...
- 【转】MyEclipse第一个Servlet程序
转自:http://blog.csdn.net/wangdingqiaoit/article/details/7674367 前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统 ...
- 配置一个servlet程序
<!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>H ...
- MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题
前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...
- 第一个Servlet程序及分析
第一个Servlet程序: package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import ja ...
- 创建第一个servlet程序--HelloServlet
这篇文章是用来纪念我第一次创建一个Servlet程序,步骤我会写得详细点,也可以参考一下,后续我会将SpringMVC 跟ssh的搭建分别更新(ps:不忙的话我会更新) 工具:java jdk 1.6 ...
- servlet(1) - 手写第一个servlet程序 - 小易Java笔记
声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名 ...
随机推荐
- 《HTML5与CSS3权威指南》读书笔记(上册)—HTML5篇
豆瓣上的评分少且评价不太好,阅读当中发现几处刊物上的小问题,不过线下口碑貌似不错,基本上人手一本 上册五百多页,主讲H5,分为标签,本地存储,离线应用程序,新的API,获取地理位置信息标签包含表单,C ...
- mx51的三个framebuffer,mxc_ipuv3_fb.c分析
转载:http://blog.csdn.net/jack_a8/article/details/43309169 mx51支持三个framebuffer:fb0, fb1, fb2 /dev/grap ...
- underScore学习1:匿名函数中call(this)的作用
匿名函数中(function(){}).call(this) 中的.call(this) 有什么用? 我们都知道,.call()可以改变函数执行时的context,即this的指向,源码中的.call ...
- sql优化方式-转载
我始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软件生命周期的不同阶段来 ...
- schema change + ogg 变更手册
Check OGG until no data queuing in replication process:testRO:a)login test5 –l oggmgrb)oggc)#ggsci ...
- js 循环迭代定时器的执行次数和执行顺序??主要是因为js是单线程
当定时器运行时即使每个迭代中执行的是setTimeout(.., 0),所有的回调函数依然是在循环结束后才会被执行 for语句开始赋值i=1;settimeout语句1000毫秒后把timer函数加入 ...
- ZZNU 1163: 在线判题(指针专题)
题目描述 Ignatius is building an Online Judge, now he has worked out all the problems except the Judge S ...
- iOS上传图片详解
iphone中图像通常存储在4个地方[相册.应用程序包.沙盒.Internet],通过这4个源,我们就可以存取应用图片. 相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过 ...
- hitTest和pointInside和CGRectContainsPoint
很多app中TabBar中间会有个凸起超出部分,为了点击超出父视图但是还想让按钮响应 //重写hitTest方法,去监听发布按钮的点击,目的是为了让凸出的部分点击也有反应- (UIView *)hit ...
- 利用ckeditor 富文本编辑插件静态化网页
// step5: 生成静态化html FileOutputStream fos = null; PrintStream printStream = null; ...