Servlet的两种部署方法

10 篇文章 0 订阅

Servlet是实现动态页面的技术,是tomcat给Java提供的原生的进行web开发的api

第一个Servlet程序

写一个servlet程序,部署到tomcat上,通过浏览器访问,得到hello world字符串

1.创建项目

此处要创建的是maven项目

maven:工程管理工具

作用:规范目录结构、管理依赖、构建、打包、测试

观察项目目录:

2.引入依赖

servlet对应的jar包

<dependencies>
       <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
           <scope>provided</scope>
       </dependency>

   </dependencies>
<dependencies>标签是自己写上去的,这个标签是project顶级标签的子标签,如果有多个依赖,都往这个标签里依次粘贴即可。

进行到这里,另外一种创建的方式

同样的引入依赖的方法也会变化,这次可以直接在重新新创建的项目中找到<dependencies>

在里面添加我们的关于servlet-api的<dependency>

3.创建目录结构

(1)在main目录下(和Java并列)创建一个webapp目录

(2)在webapp下创建一个WEB-INF目录

(3)在WEB-INF目录下创建web.xml文件

(4)给web.xml里添加内容

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

粘贴进去固定的这串代码后发现URI未识别

把报红部分添加进去即可

这段内容是固定的,直接复制粘贴即可。

4.编写代码

一个servlet类对应一个路径

这里的HelloServlet类继承HttpServlet类。在下面的代码中,只需要打出doGet方法,idea会自动生成该方法,自带的第一行super不需要,将其删掉。

这里的注解是Java中特殊的类,Java专门定义了一种“语法糖”,对一个类/方法,进行额外的解释说明。赋予这个类/方法额外的功能/含义。此处的@WebServlet作用是把当前的类和一个HTTP请求的路径关联起来。

5.打包程序

把程序编译好(得到一些.class文件)

在把这些.class文件打印成一个压缩包(比如jar包)

此处打包成war包,war包,war是tomcat专属的用来描述webapp的程序

一个war包就是一个webapp

打包完成后,包会生成在target目录

默认情况是jar包,需要调整成war包。

6.部署程序

把打包好的war拷贝到tomcat的webapps目录中即可

7.验证

打开浏览器,输入url,访问写好的代码。

总结:

在浏览器地址栏输入url后,浏览器就构造了一个HTTP GET请求,发送给了tomcat,tomcat根据一级路径确定具体的webapp,根据二级路径,确定了调用哪个类。GET/POST方法确定调用HelloServlet的哪个方法。

用Smart tomcat部署程序

上述过程可以简化(打包和部署程序的过程),使用idea的tomcat插件自动打包部署。

插件:对现有功能进行扩展

下载插件

配置插件

运行

再次点击运行,运行成功:

浏览器访问,结果和上面手动打包得到的结果一样。

工作原理:smart tomcat没有自动打包war包、拷贝war包、解压缩war包,而是指定了另一个特定的webapp目录,tomcat去加载这个webapp运行。(注意:smart tomcat部署直接访问到当前要访问的项目路径,所以看不见欢迎页面;手动war包的方式部署,路径是war包名)

可能出现的问题

404:找不到页面/未被允许访问页面

原因:路径写错;webapp部署错误(文件名、路径、位置错误,web.xml内容错误)

405:方法没有实现

原因:方法写错、没写;super代码没有删干净

500:代码抛出异常,日志中会显示哪行代码出错

出现空白页:代码里面没有写resp.getWriter.write()

无法访问此网站:tomcat未启动

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roylelele

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值