Java Web -- Servlet(4) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(1)

一、实现Servlet接口

通过实现Servlet接口来了解Servlet的生命周期

(1)以规范的形式创建一个web应用(即在webapps目录下创建一个web应用)

创建web应用

(2)classes目录下创建一个.java(该java文件为实现Servlet接口)

创建文件夹MyFirstServlet.java

代码如下:

package com.focus;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class MyFirstServlet implements Servlet

{

//Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。(初始化servlet,把servlet装载到内存中)

//该函数只会被调用一次

public void init(ServletConfig config) throws ServletException{

}

//Servlet引擎调用这个方法以允许Servlet响应请求。这个方法在Servlet未成功初始化之前无法调用。(业务逻辑代码都将写在这个函数中)

//在被卸载后,还没初始化时,service不被调用,其余可重复调用

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException{

System.out.println("Hello World!");

response.getWriter().println("Hello World!"+new java.util.Date());

}

//卸载servlet

public void destroy(){

}

//得到servlet的配置信息

public ServletConfig getServletConfig(){

return null;

}

//纯文本的servlet信息

public String getServletInfo(){

return null;

}

}

编译后出现错误,导入的程序包找不到。

PS:使用dos编译时,该Java有包是 需要输入的命令行格式为

Javac -d . name.java

(3)配置CLASSPATH  即指定到tomcat的lib目录下的servlet-api.jar(其中有servlet-api.jar就是上面所引入的javax.servlet.*;
javax.servlet.http.*;)。

在配置CLASSPATH时得指定到特定.jar

不能设置*.jar ,只能一个个写,所以一般大的工程会配置一个启动脚本,专门计算出所有的jar包,然后导入启动环境中...

重启cmd.exe,再重新编译。即可

(4)配置与部署Servlet

<servlet>

<servlet-name>MyFirstServlet</servlet-name>

<display-name>MyFirstServlet</display-name>

<servlet-class>com.focus.MyFirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyFirstServlet</servlet-name>

<url-pattern>/My</url-pattern>

</servlet-mapping>

(5)最后效果:

补充:当Tomcat启动的时候首先会启动一个server.xml,当servlet映射找不到对应的,tomcat启动直接就报错。

二、配置与部署Servlet

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上。

<servlet>

//<servlet-name>注册名、自定义一个servlet的名字

<servlet-name>MyFirstServlet</servlet-name>

<display-name>MyFirstServlet</display-name>

//</servlet-class>指定该servlet类放在哪个包中 形式 包/包/.../类(包名+类名)

<servlet-class>com.focus.MyFirstServlet</servlet-class>

</servlet>

//<servlet-mapping>servlet的映射(对一个已经注册)

<servlet-mapping>

//<servlet-name>自定义一个servlet的名字,但这个名字就代表当浏览器输入/My这个web资源的时候,该名字就映射到与之对应的名字,找到该servlet所在的class

<servlet-name>MyFirstServlet</servlet-name>

//<url-pattern>浏览器所输入的Web资源名

<url-pattern>/My</url-pattern>

</servlet-mapping>

一个注册好了的servlet可以被多次映射

如:<servlet>

<servlet-name>1</servlet-name>

<display-name>1</display-name>

<servlet-class>com.focus.MyFirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>1</servlet-name>

<url-pattern>/My</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>1</servlet-name>

<url-pattern>/Servlet/My</url-pattern>

</servlet-mapping>

<servlet-name>1</servlet-name>

<url-pattern>/Servlet/My.html</url-pattern>

</servlet-mapping>

即输入的Web资源不管是/My
或 /Servlet/My或/Servlet/My.html都可以访问到com.focus.MyFirstServlet这个类

当映射一个servlet时候,可以是多层,后缀名为html不一定就是html文件。

进行Servlet映射时,可使用通配符

有两种格式:

第一种格式 *.扩展名 如:*.html  *.abc

第二种格式 以“/“开头 同时以”/*“结尾 如:/abc/* /*

例:1. <url-pattern>/*</url-pattern>

2. <url-pattern>/abc</url-pattern>

3. <url-pattern>/abc/*</url-pattern>

4. <url-pattern>*.gogo</url-pattern>

当浏览器的URL的servlet名 输入/abc时
匹配 2

当浏览器的URL的servlet名 输入/hellobaby时
匹配 1

当浏览器的URL的servlet名 输入/abc/hellobaby时
匹配 3

当浏览器的URL的servlet名 输入/hello.gogo时
匹配 1

匹配标准:

(1)匹配度高的选择映射那个

(2)*.扩展名 的优先级最低

load-on-startup元素标记

<servlet>

<servlet-name>1</servlet-name>

<display-name>1</display-name>

<servlet-class>com.focus.MyFirstServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

2)它的值必须是一个整数,表示servlet应该被载入的顺序

2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

5)当值相同时,容器就会自己选择顺序来加载。

所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。

补充:怎样更好的管理tomcat中的web应用,即进入tomcat
Manager

Reload:即重载的意思,重新装载该web应用。

Stop:停止该web应用

好处:单独对某个web应用做相应的处理,不用对整个服务器进行操作

时间: 2024-10-10 08:22:30

Java Web -- Servlet(4) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(1)的相关文章

2、struct2开发action 的三种方法以及通配符、路径匹配原则、常量

struct2 开发action 的三种方法 1.继承ActionSupport public class UserAction extends ActionSupport { // Action中业务处理方法 public String login() { System.out.println("UserAction.login()"); // return "success"; return SUCCESS; } } 2.实现Action public clas

struts2开发action 的三种方法以及通配符、路径匹配原则、常量

struts2开发action 的三种方法 1.继承ActionSupport public class UserAction extends ActionSupport { // Action中业务处理方法 public String login() { System.out.println("UserAction.login()"); // return "success"; return SUCCESS; } } 2.实现Action public class

LVS负载均衡群集(三种工作模式原理详解)

LVS负载均衡群集(三种工作模式原理详解) 一.前言 ? 在互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器力不从心.所以我们需要通过一些方法来解决这样的瓶颈. ? 最简单的方法就是使用价格昂贵的大.小型的主机:但这样在大多数企业中显然是不可取或者说不现实的.那么我们就需要通过多个普通服务器构建服务器群集. 二.相关概念概述 2.1何为LVS? ? LVS--Linux Virtual Server,即Linux虚拟服务器(虚拟主机.共享主机),虚拟主

Spring使用jdbcJdbcTemplate和三种方法配置数据源

三种方法配置数据源 1.需要引入jar包:spring-jdbc-4.3.2.RELEASE.jar <!-- spring内置,springJdbc,配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"

java多线程二之线程同步的三种方法

java多线程的难点是在:处理多个线程同步与并发运行时线程间的通信问题.java在处理线程同步时,常用方法有: 1.synchronized关键字. 2.Lock显示加锁. 3.信号量Semaphore. 线程同步问题引入: 创建一个银行账户Account类,在创建并启动100个线程往同一个Account类实例里面添加一块钱.在没有使用上面三种方法的情况下: 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

EF三种编程方式图文详解

Entity Framework4.1之前EF支持"Database First"和"Model First"编程方式,从EF4.1开始EF开始支持支持"Code First"编程方式,今天简单看一下EF三种编程方式. 开始介绍这三种EF操作方式之前,首先在Visual Studio 2013中建立一个数据库连接,这里我们以"EFDemo"数据库为例: 说明:在这里我用的是Lenovo\SQLEXPRESS这个数据库,当然用l

【转】VMware虚拟机三种网络模式超详解

[原文]https://www.toutiao.com/i6596228488666022403/ 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有VMware Workstations和VirtualBox等. 在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而VMware的网络连接问题是大家遇到最多问题之一.在学习交流群里面,几乎每天都会有同学问到这些问题,写这篇详解也是因为

综合-----Web工程中启动Spring的三种方法

一.利用Spring 自带的Listener(推荐) 在web.xml中配置如下 <context-param> <!-- 名字固定 --> <param-name>contextConfigLocation</param-name> <!-- 值为Spring配置文件的路径 --> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> <

[Java类型转换] Object 转换成 String 的三种方法

方法一:Object.toString() obj.toString() 注意:必须保证Object不是null值,否则将抛出NullPointerException异常. 方法二:(String)Object Object o = new Integer(100); String string = (String)o; 注意:需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误. 方法三:String.valueOf(Object) 在使用Str

三种全排序算法详解

1.全排列的非去重递归算法 算法思路:全排列可以看做固定前i位,对第i+1位之后的再进行全排列,比如固定第一位,后面跟着n-1位的全排列.那么解决n-1位元素的全排列就能解决n位元素的全排列了,这样的设计很容易就能用递归实现. 附代码段: void permutation1(char* str,int sbegin,int send) //全排列的非去重递归算法 { if( sbegin == send) //当 sbegin = send时输出 { for(int i = 0;i <= sen