Tomcat常见问题与简单的Servlet开发

Tomcat常见问题

当我们在Eclipse上开发web工程时,工程部署到Tomcat上了,所以修改文件的源码时,Eclipse会自动将更改后的文件重新部署到Tomcat上,但是如果你做出修改的内容仍然在浏览器中看不到,那么可以使用以下几种常用的解决方法:

1. 右键点击部署的工程,选择清理模块文件夹:

右键点击Tomcat,选择Clean,清理Tomcat的工程目录:

  1. 右键点击Tomcat,选择Restart重新启动:

  1. 点击stop停止Tomcat服务器,并删除部署的工程,然后再重新部署工程运行:

  1. 检查以下几个细节:

ip地址是否有写错

端口是否有写错或者是否通行

工程名称有没有访问错误

请求页面的名称是否有写错

  1. 清理Tomcat的工作环境:

删除Tomcat中部署的所有工程,只运行目前的工程。

还是不行就删除整个Tomcat,重新下载一个

  1. 如果是在启动服务器时报错,要查看控制台打印的日志信息,找出错误来源,学会分析日志信息对于解决错误很有帮助:

  1. 查看Eclipse中的server目录下的文件是否正常,有没有缺失:

思维导图:

关于创建web工程时的一些问题:

在Eclipse中创建Dynamic Web Porject(动态web工程)时,会让我们选择以下几个配置:

1. 上图中的工程名称不用多解释,关于运行服务器则不一定要选择Tomcat,可以使用其他的web服务器:

我们选择Tomcat并不是说针对Tomcat这个服务器去开发,开发后的工程并不是只能应用于这个服务器,Tomcat只是作为一个运行我们开发工程的载体,在Tomcat上开发的工程完全可以在其他的支持Java的服务器中运行。

我们使用Tomcat作为运行服务器是为了导入Tomcat的jar包类库,每个支持Java的web服务器都实现了Java所定制的接口规范,我们开发web工程的时候需要借助这些接口来进行开发,就像使用JDBC连接数据库一样,需要导入JDBC的jar包,通过它根据接口规范所实现的操作类去开发连接数据库的模块,这也是Java面向接口编程普遍的应用之一。

  1. 动态web模块版本需要视服务器的版本而选择,因为不同版本的web服务器支持的动态web模块版本不一样,这里以Tomcat为例,Tomcat8.0以上的版本才可以支持3.1的web模块版本,那么如何得知当前使用的web服务器版本支持什么版本的web模块?这个可以在官方的文档上查看到,同样的以Tomcat为例:

选择一个版本点击进去:

在工程创建时的点击Configuration(配置)右边的按钮,可以在里面勾选一些Project Facets,并且能选择不同的版本:

Project Facets可以理解为:“项目的特性”。Project Facets的作用特性:

  • facet 定义了 java ee 项目的特性和要求
  • 为项目添加 EAR facet 会自动添加 web.xml (deployment descriptor file) ,并重新设置classpath
  • 项目创建时至少已经有一个 facet,开发人员可以按需添加其他 facet
  • 有的 facet 会依赖其他 facet
  • 有的 facet 可能和其他 facet 互斥
  • facet 可以设置版本

下面用实际例子来演示一下Project Facets的作用:

例如我现在有一个普通的Java工程:

右键点击此工程的属性,进入属性界面后点击Project Facets,可以看到这个工程勾选了哪些Project Facets:

可以看到只勾选了Java,这是被默认选中的配置,因为这是一个最简单的java项目,如果想把这个java项目变成一个web项目,勾选其中的Dynamic Web Module并点击Apply即可:

此时查看工程目录可以看到多了一个WebContent目录:

重新打开Project Facets面板框,会发现JavaScript选项框也被选中了:

从这个例子应该可以很轻易地明白Project Facets的作用。

Servlet开发

介绍如何开发servlet之前,先介绍一下什么是servlet:

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

所以Servlet就是一个接收用户请求,处理完请求后生成动态Web内容的一个Java程序。是一个简单的Java类,这个类中写的是处理用户请求的代码,因为web服务器都是以http协议来进行通信的,所以开发基于http协议的Servlet需要继承一个叫做HttpServlet的类,并且要实现它里面的一个方法,这个方法用来处理用户的请求。

示意图:

除了需要继承一个父类,我们还需要配置Servlet的web访问映射,需要给它起一个别名,在浏览器中只需要访问这个别名就可以访问到这个Servlet类。有两种配置方式:一种是通过web.xml文件进行配置,一种是通过注解来配置。首先介绍通过xml来配置,因为注解相对于xml来说要简单一些,至于为什么要有一个别名:

  1. 在创建web工程的时候勾选创建web.xml文件:

2. 创建一个Java类,继承于HttpServlet,并重写父类的doGet方法,并在方法中写上一句打印语句:

3. 打开web.xml文件,删除一些内容:

  1. 增加以下配置信息:

简单解释一下这段配置信息的意义:

5. 配置完之后,将工程部署到Tomcat中,并启动Tomcat服务器,然后在浏览器中访问以下地址:

http://localhost:8080/myweb/hello

打开后会发现控制台打印了一段消息:

这是因为这个Servlet被访问了,所以方法中的代码也就会执行了。

从浏览器访问Servlet的过程:

Tomcat服务器接收到浏览器的访问时,会先去webapps这个目录下找到该访问的目标Servlet所在的工程目录,然后在此工程目录下找到WEB-INF目录,询问此目录下的web.xml文件,会在此文件中先寻找到<url-pattern>标签所声明的内容,再找到与此标签相对应的<servlet-class>标签里声明的Servlet操作类。寻找到后就会去classes目录下找到这个Servlet操作类,接着就会实例化此操作类的对象,然后调用此类中的doGet方法,就会执行此方法里面的代码。

所以最后会在控制台打印一段消息,每次访问Servlet都是这样的一个流程,这只是最简单Servlet访问流程,还有更复杂的。

以上是通过web.xml去配置Servlet的web访问,下面介绍一下使用注解来配置,但是要注意的是注解的配置方式是Servlet3.0才有的特性:

1.创建web工程,这次不需要勾选创建web.xml文件了,然后同样的创建一个Java类,继承于HttpServlet,并重写父类的doGet方法,在方法中写上一句打印语句:

  1. 配置注解,在类上声明@WebServlet() 注解,并在注解的小括号里上此Servlet类的web访问名称:

可以看到通过注解的方式来配置,比web.xml不知道高到哪里去了,一个注解就搞定了,要简单很多,所以xml渐渐地比较少使用了,只不过一些老工程可能是使用xml文件配置的,所以了解一下xml的配置方式还是有必要的,免得到时候遇到了抓瞎。

3. 配置完之后,同样的将工程部署到Tomcat中,并启动Tomcat服务器,然后在浏览器中访问以下地址:

http://localhost:8080/myweb/hello

打开后也会发现控制台打印了一段消息:

你访问几次就会打印多少句:

通过数组,注解能一次性配置多个别名,而xml文件需要写好几个标签:

通过以上的几个别名都可以访问这个Servlet:

控制台:

甚至可以加上任意后缀:

访问它时依旧是个Servlet:

控制台:

每次修改Servlet的别名后记得重启Tomcat服务器,不然不会生效的。

时间: 2024-11-08 22:37:27

Tomcat常见问题与简单的Servlet开发的相关文章

用IDEA开发简单的Servlet

最近学习java,主要是servlet相关的内容.IDEA和servlet之前都没有碰过,所以做了一下小实验,走了一些弯路:这里把一个完整的步骤写出来,加深一下印象. IDEA创建项目步骤 1. 在idea 14种新建一个java项目,类型是web Application 如下图 将创建的项目命名为DemoServlet 2. 建一个servlet的类,在project栏中的项目src目录上右键新建一个Servlet类, 命名为FirstServlet, 包名为javademo 3. 加入需要依

IDEA新建MavenWeb项目并通过Tomcat运行HelloWorld以及运行简单的Servlet类

IDEA新建MavenWeb项目并通过Tomcat运行HelloWorld以及运行简单的Servlet类 由于在IDEA中新建Maven项目配置web中遇到很多坑,目前在这边记录一下 一.运行环境: IntelliJ IDEA Version 2018.3.4 (IDEA2018)  . JDK1.8 二.运行中所需安装包以及最终的项目 项目ZIP 链接:https://pan.baidu.com/s/1N39STOehDV1s6bAQytNJMA 提取码:dp74 Tomcat 链接:http

javaWeb中servlet开发——过滤器

servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承httpServlet类形式. 过滤器servlet和监听servlet不是程序所必须的. 要想完成一个过滤器的开发,首先必须让一个类实现Filter接口,此接口是javax.serclet中的.根据这个包的特点可发现,此接口的主要功能是完成公共协议的操作. Filter接口中的方法: 简单的servle

JavaWeb学习总结第四篇--Servlet开发

Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请求—响应模式就是典型的Web应用程序访问过程. JavaWeb应用程序中所有的请求—响应都是由Servlet完成的.Servlet是JavaWeb的核心程序,所有的网址最终都交给Servlet处理.Servlet并没有main之类的执行方法.当用户访问服务器的时候,Tomcat是通过调用Servle

初学 Java Web 开发,请远离各种框架,从 Servlet 开发

Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从这个剥离出来的基础做起,让开发者更关注更具体的业务问题,而不是Web的请求和响应的控制. 框架很多,但套路基本类似,帮你隐藏很多关于 HTTP 协议细节内容,专注功能开发. 但对一个初学者来说,过早的接触框架往往是事倍功半!同样一个问题,换一种框架你可能需要从头开始研究. 下面是针对初学 Java

Servlet学习教程(三)---- 一个简单的Servlet例子

我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置Default output folder 为Servlet/WebContent/WEB-INF/classes 第二,创建一个包,包名为Servlet,然后创建一个类名为WelcomeServlet类.(Servlet类当然缺少不了Servlet容器,请注意你的开发软件是否已经集成Servlet容

Javaweb之 servlet 开发具体解释1

1.1  Tip:Servlet简单介绍 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),须要完毕下面2个步骤: 1.编写一个Java类.实现servlet接口. 2.把开发好的Java类部署到webserver中. 编写一个Java程序,向浏览器输出"hello servlet". 编写这个程序须要解决的2个问题: 在Java程序中,怎样才

一个简单的Servlet

1.Servlet开发选项: 为了创建Servlet,需要访问Servlet容器(服务器).两个常用的服务器分别是 Glassfish 和 Tomcat .这里的Servlet开发和部署都是基于Tomcat ,并且只使用命令行工具. 2.使用Tomcat: Tomcat包含了创建和测试Servlet所需要的类库.文档以及运行时支持.Tomcat有多个不同版本,从官网下载合适的版本即可http://tomcat.apache.org/.下载后解压,配置环境变量(64位Windows环境为例): 2

如何使用eclipse创建简单的servlet

Servlet是一种基于java开发的服务器程序,可以对外公布服务,如果是浏览器应用,可以通过浏览器打开网址的方式查看服务.创建servlet要继承httpservlet,并且在web.xml中配置拦截方式,,小编介绍下如何在eclipse下创建一个简单的servlet程序. 工具/原料 eclipse开发工具 httpServlelt包 java开发环境 方法/步骤 首先,创建一个简单的动态web项目. 打开eclipse,点击工具栏上的File文件--New新建--Project项目   选