如何成功运行一个最简单的servlet
好吧,又是一个简单到不能再简单的问题~~
由于各种原因,这次就不上图了,直接步骤和代码了。
1、前期准备
jdk、tomcat、EditPlus(eclipse)安装成功并且设置好环境变量。
2、由于jdk(JavaSE)是无法直接编译servlet的,所以需要将tomcat安装目录\lib\servlet-api.jar复制到java安装目录\lib下,并且为了确保没有问题,可以在系统变量CLASSPATH后面加上“;%CATALINA_HOME%\lib\servlet-api.jar”(前提是CATALINA_HOME要设置好啊。。)
3、创建文件结构
我在tomcat的webapps目录下新建了一个my文件夹,下面又新增了src文件夹(放所有的java文件包括servlet)、WEB-INF文件夹(放所有的classes类、jar包、静态页面和web.xml),WEB-INF文件夹里新建两个文件夹:classes和lib。
4、现在可以写代码了,在src文件夹下新建文件夹servlet,在servlet文件夹内新建一个java文件,命名为HelloWorldServlet.java。
package servlet; //打包,注意这个地方,待会在配置web.xml时会用到 import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*; //以上三个导入语句都是servlet要用到的,尤其是前两个 public class HelloWorldServlet extends HttpServlet{ protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws IOException,ServletException{ PrintWriter out = resp.getWriter(); //打印流,自动flush,不会抛出异常
out.println("<html><head><title>Hello</title></head><body>HelloWorld!</body></html>");
//作用是输出HelloWorld!字段 out.flush(); //flush() 清空缓冲区的数据 out.close(); //关闭 }
}
因为我用的是EditPlus,所以就手动来编译一下吧(实话说一个两个都也没啥,多了我也不知道怎么办比较好。。。)
运行——cmd——cd D:\apache-tomcat-8.0.12\webapps\my\src\servlet(这个路径根据实际情况可以改)——javac HelloWorldServlet.java
如果出现乱码的问题,请参见我的上一篇文章《解决java文件编码和windows7系统(中文版)默认编码冲突所导致的乱码情况》
成功编译之后,将生成的class文件复制到WEB-INF文件夹的classes文件夹中。注意,因为HelloWorldServlet.java的位置是在servlet文件夹内,所以在这里也要如法炮制,在classes文件夹里也要新建servlet文件夹,并将HelloWorldServlet.class文件放入其中。
5、别以为这就完事了。。配置web.xml同样是件大事。如果没有配置这个,100%报404(我才不会告诉你我蛋疼了好长时间)
如果你用的是eclipse或者其他的工具的话,可以在建立项目时就选择创建默认的web.xml(内面的内容非常少,只有一些欢迎的页面设置)。我是用的tomcat里example项目中改的,大家可以参考:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true"> <servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>servlet.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>
</web-app>
加粗的内容是针对上文中写的servlet的设置。大家可以如法炮制(实话说我也讲不太明白,大家自行百度吧)。。。
6、最后,启动tomcat,输入http://localhost:8080/my/HelloWorldServlet ,搞定。
如何成功运行一个最简单的servlet的更多相关文章
- javaWeb之写一个最简单的servlet
1. 创建一个类servletTest2 继承HttpServlet类. public class servletTest2 extends HttpServlet { public servletT ...
- 一个最简单的Servlet实例
先在tomcat的webapps目录下,新建一目录,如test.然后,在test目录下建立WEB-INF为名的目录.这个必须有. 然后,在WEB-INF目录下建立classes目录.用以存储所用到的c ...
- 通过Jetty搭建一个简单的Servlet运行环境
最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...
- 开发部署一个简单的Servlet
Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下.Servlet ...
- 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在
由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...
- Servlet复习1: 一个简单的Servlet的使用
Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...
- Tomcat剖析(二):一个简单的Servlet服务器
Tomcat剖析(二):一个简单的Servlet服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三) ...
- Tomcat学习笔记(二)—— 一个简单的Servlet容器
1.简介:Servlet编程是通过javax.Servlet和javax.servlet.http这两个包的类和接口实现的,其中javax.servlet.Servlet接口至关重要,所有的Servl ...
- 使用Dockerfile创建一个tomcat镜像,并运行一个简单war包
docker已经看了有一段时间了,对镜像和容器也有了一个大致了解,参考书上的例子制作一个tomcat镜像,并简单运行一个HelloWorld.war 1.首先下载linux环境的tomcat和jdk, ...
随机推荐
- 当padding,margin,top为百分比值,具体数值如何计算
padding以及margin的四个方向设置值为百分数的时候,是以父元素的宽度为基数来进行计算. (为了保持横向和纵向方向上的margin/padding一致,但是其实也不是一定以父元素的宽度为参照物 ...
- React(JSX语法)-----JSX属性
1. if you know all the propertities that you want to place on a component ahead of time,it is easy t ...
- DNS学习笔记之DNS理论知识
DNS: Domain Name System (将域名和ip地址相互转化) 域名是一个范围,例如baidu.com,.com.而www.baidu.com是个主机名,即FQDN: Full Qual ...
- [BZOJ 3682]Phorni
后缀平衡树的模板题? I'm so weak…… 现在觉得替罪羊树比 treap 好写,是不是没救了喵- #include <cstdio> #include <cmath> ...
- OpenGL顶点数组
概述 作为在立即模式(glBegin()与glEnd()之间)下指定单个顶点数据的替代,你可以保存顶点数据在一组列表中,包括顶点位置.法线.纹理坐标与颜色信息.并且你可以通过索引数组解引用数组元素绘制 ...
- Python 各进制间的转换(转)
转载自:http://blog.chinaunix.net/uid-21516619-id-1824975.html python 2.6以后内置函数#10进制转为2进制>>> bi ...
- Oracle RAC asm常用命令
在Oracle RAC环境下,使用grid帐号执行 运行asmcmd进入asm命令模式,如: [grid@oradb-node1 ~]$ asmcmd ASMCMD> ASMCMD> du ...
- linux shell:nginx日志切割脚本
需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名 简要命令: mv /usr/local/tengine/logs/access.l ...
- .NET批量删除代码前的行号
1 EmEditor Pro.EditPlus .visual studio ,把有行号的代码粘贴进去,按住键盘的Alt键,然后用鼠标拖出选择框列选行号,最后按Delete删除行号; 2 使用正则 ...
- VS2012 InstallShield2013LimitedEdition激活
VS2012 InstallShield2013LimitedEdition激活 在实际开发工作中由于升级操作系统后,不知何种原因,导致 InstallShield2013LimitedEdition ...