Servlet再探-开发servlet

之前对Servlet一直都是云云雾雾的,这里再根据项目做到的程度,再进行Servlet巩固加深。

Servlet本身不能独立运行,需要在一个web应用中运行,而一个web应用是部署在Tomcat中的。

所以开发一个servlet需要如下几个步骤:

  1. 创建web应用项目
  2. 编写servlet代码
  3. 部署到tomcat中

1. 创建一个Java项目j2ee

File->New->Other->Java->Java Project
输入名称j2ee

选择eclipse ee 创建项目的方式,把各种Tomcat、相关配置文件的生成都自动做掉了。

2. 导入必须的servlet-api.jar 包

开发servlet需要用到servlet-api.jar这个包里的相关类,包位于\apache-tomcat-8.5.42\lib文件夹下。

右键点击项目 -> properties -> Java Build Path ->Libraries -> Add External JARs

3. 编写HelloServlet

创建HelloServlet类,继承了HTTPServlet,并提供了一个doGet方法。

在浏览器中输入地址提交数据的方式是GET,所以该Servlet需要提供一个对应的doGet方法。

在doGet中,输出html,分别是标题单元h1和当前时间的字符串。

import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,HttpServletResponse response) {
		try {
			response.getWriter().println("<h1>Hello Servlet!</h1>");
			response.getWriter().println(new Date().toLocaleString());
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
}

4. 配置web.xml

  • 首先在j2ee下创建目录web
  • 接着再创建目录web/WEB-INF
  • 然后在WEB-INF目录中创建web.xml

web.xml提供路径与servlet的映射关系,把/hello这个路径映射到HelloServlet这个类上

<servlet>标签下的<servlet-name>与<servlet-mappping>标签下的<servlet-name>必须一样。

<servlet-name>与<servlet-class>可以不一样,但是为了便于理解与维护,一般都会写的一样。一目了然。

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

5. 指定项目输出到classes目录

首先在WEB-INF下创建classes目录

把项目的class文件输出由原来的 j2ee/bin 设置到 j2ee/web/WEB-INF/classes下
步骤: 
项目右键->properties->Java Build Path->Source->右下角的 Brower-> 指定位置是 j2ee/web/WEB-INF/classes。
为什么要有这一步? 在ecilpse中默认输出的class是在bin目录下,但是tomcat启动之后,在默认情况下,不会去bin目录找这些class文件,而是到WEB-INF/classes这个目录下去寻找。 所以通过这一步的配置,使得eclipse的class文件输出到WEB-INF/classes目录下,那么这样就和tomcat兼容了。

6. 配置tomcat的server.xml中的<context>

为了把 j2ee/web 这个目录部署到tomcat中,进行如下操作:
打开tomcat/conf/sever.xml
在 <Host name="localhost" 。。。 下面加一句

<Context path="/" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />

path="/" 就表示直接通过 http://127.0.0.1/hello 就可以访问网页了。

如果设置为

<Context path="/j2ee" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />

那么表示需要通过 http://127.0.0.1/j2ee/hello才能访问。

7. 删除tomcat webapps下的根目录

在上一步部署web的时候server.xml中的path 配置为 "/" 与 webapps下的ROOT目录冲突了
所以要删除ROOT目录,如果没有就不用删除了。

由于我个人将上一步的path="/j2ee",故没有删除root目录。

8. 重启tomcat,访问http://127.0.0.1/j2ee/hello

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值