J2EE梳理(二)——servlet部署


思路:新建一个java project,通过配置相关路径等熟悉J2ee tomcat servlet
来自于how2java

步骤1:创建一个单纯的JAVA项目:

  • File->New->Other->Java->Java Project ;输入名称j2ee;
  • 不要通过dynamic web project 的方式,它会把各种tomcat,相关配置文件的生成都自动做掉了。 而这些细节,恰恰就是你需要学习和掌握的。

步骤2: 导入servlet jar包:

  • servlet-api.jar 包位于 D:\tomcat\lib\servlet-api.jar
  • 右键点击项目 -> properties -> Java Build Path ->Libraries -> Add External JARs

步骤3 :编写HelloServlet

  • 创建一个普通类 ctrl+n,自带包名j2ee,不要使用,让其置空
  • 为什么
  • 我们通过http://127.0.0.1/hello 访问该类,在浏览器中输入地址提交数据的方式是GET:
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) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
     
}

步骤4 :编写web.xml:

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

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

  • <servlet> 标签下的 <servlet-name><servlet-mapping> 标签下的 <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>
  • 通过hello,访问HelloServlet,HelloServlet对应servlet-class 的位置,所以我们把HelloServlet.java不放在包里
  • 是吗

步骤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中JAVA Project默认输出的class是在bin目录下,但是tomcat启动之后,在默认情况下,不会去bin目录找这些class文件,而是到WEB-INF/classes这个目录下去寻找。 所以通过这一步的配置,使得eclipse的class文件输出到WEB-INF/classes目录下,那么这样就和tomcat兼容了。

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

在 <Host name=“localhost” 下面加一句

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

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

 <Context path="/j2ee" docBase="D:/project/j2ee" debug="0" reloadable="false" />

http://localhost/j2ee/hello``http://localhost/j2ee/web/hello 都无法访问到HelloServlet;

而对于

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

http://localhost/j2ee/web/hello可以访问
而另外一个结构的web应用:
在这里插入图片描述
即可访问:二者结构差异:
在这里插入图片描述
左边build里是class文件,而右边的class在web/web-inf/classes里

步骤 7 : 删除tomcat webapps下的ROOT目录

在上一步部署web的时候server.xml中的path 配置为 “/” 与 webapps下的ROOT目录冲突了

  • 如果path配置的是/j2ee 不冲突

总结:

整个请求的流程:url请求->web.xml解析->定位为helloservlet->去配置目录的/classes下找类->执行后返回结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值