接下来我会慢慢把自己以前翻译的文章挪到CSDN上来。
原网址:https://www.javatpoint.com/steps-to-create-a-servlet-using-tomcat-server
生成一个servlet实例需要6个步骤,所有服务器都需要经过这6个步骤才能创建一个servlet实例。
servlet实例可以通过以下3种途径产生:
- 实现Servlet接口,
- 继承GenericServlet类, (或者)
- 继承HttpServlet类
用的最多的是通过继承HttpServlet类,因为它提供了http请求的具体方法,比如doGet(), doPost(), doHead()等等
现在我们要通过apache tomcat服务器来产生servlet实例,步骤如下:
- 生成一个目录结构
- 生成一个Servlet
- 编译这个Servlet
- 生成一个deployment descriptor(部署描述文件)
- 启动server,部署项目
- 访问该servlet
1)生成一个目录结构
该目录结构定义了不同文件的存放路径,这样,web容器才能找到信息响应给客户端
Sun Microsystem定义了一个所有服务器供应商都要遵守的独特的标准。我们来看看生成servlet需要遵循的目录结构。
如你所见,servlet类文件必须放在classes文件夹下, web.xml文件必须放在WEB-INF文件夹下。
2)生成一个Servlet
servlet可以通过以下3种途径产生:
HttpServlet类被广泛用来生成servlet因为它提供了方法来处理http请求,比如doGet(), doPost, doHead()等等 |
在这个实例里我们将要通过继承HttpServlet类和实现doGet()方法来生成一个servlet,注意,获取的请求是默认请求。 |
DemoServlet.java
- import javax.servlet.http.*;
- import javax.servlet.*;
- import java.io.*;
- public class DemoServlet extends HttpServlet{
- public void doGet(HttpServletRequest req,HttpServletResponse res)
- throws ServletException,IOException
- {
- res.setContentType("text/html");//setting the content type
- PrintWriter pw=res.getWriter();//get the stream to write the data
- //writing html in the stream
- pw.println("<html><body>");
- pw.println("Welcome to servlet");
- pw.println("</body></html>");
- pw.close();//closing the stream
- }}
3)编译servlet
编译servlet时,jar文件是必需的,不同的服务器提供不同的jar文件:
Jar file | Server |
---|---|
1) servlet-api.jar | Apache Tomcat |
2) weblogic.jar | Weblogic |
3) javaee.jar | Glassfish |
4) javaee.jar | JBoss |
有2中方式来加载 jar文件
- 配置classpath
- 把jar文件粘贴到JRE/lib/ext文件夹
Java文件可以随意存放,编译好java文件后,把servlet的类文件粘贴到WEB-INF/classes文件夹
4)生成部署描述文件(web.xml file)
部署描述文件是个xml文件,用来描述servlet被调用的信息。
Web容器用Parser从web.xml文件里获取信息,有很多xml分析器,比如SAX, DOM and Pull.
web.xml文件里有很多元素,这里给出了一些跑servlet程序所必需的元素。
web.xml file
- <web-app>
- <servlet>
- <servlet-name>sonoojaiswal</servlet-name>
- <servlet-class>DemoServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>sonoojaiswal</servlet-name>
- <url-pattern>/welcome</url-pattern>
- </servlet-mapping>
- </web-app>
对web.xml文件中的元素的描述
web.xml文件里有很多元素,这是上面的web.xml文件里涉及到的一些元素的说明。
<web-app> 代表整个应用. |
<servlet> 是<web-app>的子元素,代表该servlet. |
<servlet-name> 是<servlet>的子元素,代表该servlet的名字. |
<servlet-class> 是<servlet>的子元素,代表该servlet的类. |
<servlet-mapping> 是<web-app>的子元素,它被用来映射该servlet. |
<url-pattern> 是<servlet-mapping>的子元素,这个pattern被用于客户端调用该servlet. |
5)启动server,部署项目
启动Apache Tomcat服务器,双击apache-tomcat/bin目录下的startup.bat文件
为Apache Tomcat服务器做一次性配置
你需要执行2个任务:
- 在环境变量中配置 JAVA_HOME 或者 JRE_HOME (启动服务器必需的步骤).
- 修改tomcat端口号(可选). 如果另一台服务器也用一样的端口号(8080)跑,那端口号就必须要修改掉。
1) 如何在环境变量中配置 JAVA_HOME?
要启动Apache Tomcat服务器,JAVA_HOME 和 JRE_HOME 必须要在环境变量中配置好。
打开我的电脑,属性->单击高级系统配置->单击用户变量上的新建选项->在JAVA_HOME写上变量名字,并且把JDK的路径粘贴到变量值里->ok->ok->ok
打开我的电脑,属性:
单击高级系统配置,然后单击环境变量:
单击用户变量或者系统变量上的新建选项:
在“变量”里写上JAVA_HOME,把JDK安装路径粘贴到“值”里:
路径结尾不能有分号(;)
JAVA_HOME配置好之后双击 apache tomcat/bin路径下的startup.bat文件. |
注意: 只有2种tomcat是可用的:
|
这是只需要提取的apache tomcat. |
现在服务器成功启动。
2) 如何修改apache tomcat的端口号
和另外一个服务器用同样的端口号在同一个系统上跑的时候,必须要修改端口号。假如你安装了oracle,你需要修改端口号,因为他们都用一样的默认端口号8080.
用记事本打开server.xml file,它位于apache-tomcat/conf目录下。修改Connector port = 8080,把8080用任意4未数字替代,在这里我用9999替代,保存文件。
5) 如何部署servlet项目
拷贝项目,粘贴到apache tomcat下的webapps文件夹
但是有好几种部署项目的方法,它们是:
- 拷贝context(project)文件夹到webapps 目录
- 拷贝war文件夹到webapps 目录
- 选择服务器的路径
- 选择服务器的war文件
这里我们用第一中方法。
你也可以新建war文件,粘贴到webapps 目录。要这样做的话,你需要用jar工具来生成war文件。进入项目目录(在WEB-INF之前),写入:
- projectfolder> jar cvf myproject.war *
生成war文件有个好处是能花更短的时间把项目从一个位置移动到另一个位置。
6) 如何访问servlet
打开浏览器,写入http://hostname:portno/contextroot/urlpatternofservlet.比如:
- http://localhost:9999/demo/welcome
download example of servlet by implementing Servlet interface