Java Servlet(一):创建工程(jdk7+tomcat7+eclipse)

本篇文件主要记录下怎么在jdk7+tomcat7下,使用eclipse创建并运行一个servlet工程。

安装具体步骤从网上搜索就可以找到,这里不再赘述。

在eclipse中切换到j2ee下,

从导航菜单windows下找到show view选项,并在show view下找到server。

在server中创建tomcat server。

并从导航菜单file下找->new->dynamic web project.

在project name中输入工程名称MyServlet001

一直下一步,一直到如下步骤:

这里一定要记得勾选Generate web.xml deployment description选项,否则在/WebContent/Web-INF/下会缺少web.xml文件。

新建好的工程结构如下:

我们在src中添加包com.dx.hello,并创建java类HelloServlet.class,并让该类实现servlet的init,service,distory,getServletConfig,getServletInfo函数,并添加HelloServlet类的构造函数,并在每个函数内部输出函数的名称。

 1 package com.dx.hello;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.Servlet;
 5 import javax.servlet.ServletConfig;
 6 import javax.servlet.ServletException;
 7 import javax.servlet.ServletRequest;
 8 import javax.servlet.ServletResponse;
 9 
10 public class HelloServlet implements Servlet {
11     public HelloServlet() {
12         System.out.println("HelloServlet constructor");
13     }
14 
15     public void init(ServletConfig config) throws ServletException {
16         System.out.println("init");
17     }
18 
19     public void destroy() {
20         System.out.println("destroy");
21     }
22 
23     public ServletConfig getServletConfig() {
24         System.out.println("getServletConfig");
25         return null;
26     }
27 
28     public String getServletInfo() {                         
29         System.out.println("getServletInfo");
30         return null;
31     }
32 
33     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
34         System.out.println("service");
35     }
36 
37 }

修改配置文件web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     id="WebApp_ID" version="3.0">
 6     
 7     <!-- 配置和映射 servlet -->
 8     <servlet>
 9         <!-- Servlet注册的名字 -->
10         <servlet-name>helloServlet</servlet-name>
11         <!-- Servlet全类名 -->
12         <servlet-class>com.dx.hello.HelloServlet</servlet-class>
13     </servlet>
14     <servlet-mapping>
15         <!-- 对应servlet节点下的servlet-name的注册名字一致 -->
16         <servlet-name>helloServlet</servlet-name>
17         <!-- 映射具体的访问路径,其中/代表当前web的根目录 -->
18         <url-pattern>/hello</url-pattern>
19     </servlet-mapping>
20     
21 </web-app>

启动tomcat,在浏览器中输入http://localhost:8080/MyServlet001/hello.回车将会在浏览器中出现一个空白页面。

这是我们在eclipse中查看tomcat日志信息会发现如下信息:

。。。
INFO: Command line argument: -Dfile.encoding=GBK
二月 27, 2016 10:10:44 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\java\jdk1.6\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin/server;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/lib/amd64;E:\SourceCode\lihui\Network\LTEPlanDesktop\LTEPlanDesktop-ZJ\DTGroup.LTEPlanDesktop.WinUI\References\SuperMap\;D:\Program Files\Java\jdk1.7.0_79\bin;D:\Program Files\Java\jdk1.7.0_79\jre\bin;D:\java\axis2-1.6.3\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\scala\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\scala\bin;C:\Program Files\Microsoft\Web Platform Installer\;%USERPROFILE%\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;d:\AppServ\php5.5;;D:\java\eclipse-jee-mars-1-win32-x86_64\eclipse;;.
二月 27, 2016 10:10:44 下午 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
二月 27, 2016 10:10:44 下午 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
二月 27, 2016 10:10:44 下午 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1481 ms
二月 27, 2016 10:10:44 下午 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
二月 27, 2016 10:10:44 下午 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.65
二月 27, 2016 10:10:46 下午 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
二月 27, 2016 10:10:46 下午 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
二月 27, 2016 10:10:46 下午 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1379 ms
HelloServlet constructor
init
service

之后,再eclipse中停止tomcat server服务,将会发下tomcat server日志信息:

二月 27, 2016 10:12:45 下午 org.apache.catalina.core.StandardServer await
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
二月 27, 2016 10:12:45 下午 org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
destroy
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

不错,上边日志信息标示为红色的字体信息,正是HelloServlet.java函数中打印出来的信息,这整个过程也就是从一个servlet的初始化,到结束的整个生命周期,而tomcat正是管理servlet生命周期的一个容器。

Servlet工作原理:

web.xml是一个必须必须配置的,如果访问的路径:http://localhost:8080/MyServlet001/hello,tomcat会根据配置的web.xml信息找到对应的servlet-mapping集合,并根据该集合中的servlet-name找到servlet节点下的servlet-class选项,并调用该类的中的对应函数信息,实现与客户端接收与相应工作。

从Servlet工作原理中我们也可以发下,tomcat就是servlet的一个运行容器,它控制了servlet的整个生命周期。

 

下章节,我们记录servlet怎么使用及它的工作原理相关细节。

转载于:https://www.cnblogs.com/yy3b2007com/p/5223825.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分支定义之Trunk vs Master

trunk是svn版本管理中的主干表示&#xff0c;而git中的主干叫master&#xff0c;因此git的master相当于svn的trunk&#xff0c;git的开发分支dev分支相当于svn里的branches SVN&#xff1a; trunk&#xff1a;是用来做主方向开发的一直向前进行&#xff0c;一个新模块的开发就…

Jsvc的使用场景

组件启动安装的操作顺序&#xff1a; 执行postinstall.sh 执行启动组件的linux服务 执行组件的__service文件 执行jsvc命令 执行spring boot的main方法 组件的卸载流程&#xff1a; 通过preuninstall.sh脚本&#xff0c;供运行和管理中心来进行调用 启动组件的底层命令&…

inline,block,inline-block的区别

display:blockblock元素会独占一行&#xff0c;多个block元素会各自新起一行。默认情况下&#xff0c;block元素宽度自动填满其父元素宽度。block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。block元素可以设置margin和padding属性。display:inline…

mysql 多条件统计

第一种写法 select count(IF(t2.work_order_status102 or t2.work_order_status5,1,null)) as totalComWorkOrderNum, count(IF(t2.work_order_status9,1,null)) as toBeTakingWorkOrderNum, count(IF(t2.work_order_status10,1,null)) as toBeSignedWorkOrderNum, count(IF(t2…

面试、求职妙招!

简历关 简单干净、纯色底板的简历模板是最好的选择简历结构与逻辑&#xff1a;个人信息、教育情况、工作经历、项目经历、自我评价、其他信息。如果有很多段经历&#xff0c;建议优先写最近的经历&#xff0c;然后采用倒叙的顺序来写比较合适&#xff0c;大部分公司习惯从最近…

bzoj3238 [Ahoi2013]差异

题目链接 树状数组单调栈 计算出每个后缀的前面、后面第一个h[]比它小的(前闭后开)&#xff0c;乘起来计算答案 1 #include<algorithm>2 #include<iostream>3 #include<cstdlib>4 #include<cstring>5 #include<cstdio>6 #include<string>7…

IDEA全文搜索排除无用的文件夹

问题&#xff1a;最近在用到idea的全文搜索关键字功能时候&#xff0c;发现检索很慢&#xff0c;仔细一看发现除了从工程类的java文件检索之外&#xff0c;另外从很多日志文件里也进行了检索&#xff0c;比如工程运行生成的日志文件。导致卡死、搜索巨慢 解法&#xff1a;为了…

双频无线网安装设置(5g ) for linux

为了在局域网实现远程wifi调试&#xff0c;例如调试需要图像数据传输&#xff0c;则需要搭建局域网5g无线网络。 1、硬件要求 a. TP-Link(型号&#xff1a;TL-WDR6500&#xff0c;AC1300双频无线路由器&#xff0c;支持5g&#xff0c;2.4g) ,安装时需要设置好5g和2.4g的模式。 …

分布式事务锁 讲解

https://www.cnblogs.com/seesun2012/p/9214653.html

回调方法理解与实践

定义&#xff1a; 所谓回调方法&#xff0c;就是调用方把一个需要被回调的方法作为参数&#xff0c;传递给要调用的方法&#xff0c;被调用的方法执行完成后&#xff0c;通过该参数返回来调用此方法&#xff0c;作为参数传递的该方法就称作回调方法。实际上是一种双向的调用方式…

Lua开发

http://jinnianshilongnian.iteye.com/blog/2186448 转载于:https://www.cnblogs.com/archoncap/p/5237176.html

Java编程提高性能的26个方法

https://blog.csdn.net/linux_loajie/article/details/7692047 https://blog.csdn.net/qq_15766297/article/details/70503222

入职新公司二三事

初到一家公司&#xff0c;如何快速的上手项目呢&#xff1f;整理几点值得分享的经验 上岗阶段 按照入职时间报到完成入职流程&#xff0c;带齐材料&#xff0c;提前准备好笔记本和笔跟随主管带到工位&#xff0c;电脑装好&#xff0c;准备下载需要的常见开发工具&#xff08;…

第五天实习报告

今天是实习的第五天&#xff0c;佳佳姐继续教我做测试工作。今天的工作问题是领取的优惠券手机端下单后&#xff0c;提示优惠券已使用&#xff0c;即使关闭订单取消订单也是&#xff0c;但是我这边负责小米3和苹果5都是显示待使用&#xff0c;机型锤子-坚果&#xff0c;vivo机型…

jquery cxSelect 使用

http://www.jq22.com/jquery-info3238 http://www.bkjia.com/jQuery/1135157.html