Tomcat & Servlet
javaWeb
javaWeb是指使用java技术实现所有web程序的技术的总称。我们称之为javaWeb。
1、请求和响应(成对出现)

2、Web资源的分类
web资源分为两大类,分别是静态资源和动态资源。
静态资源指的是:html,Js,CSS,img图片,视频文件,txt文件等等。都是静态资源。
动态资源指的是:Servlet程序,jsp动态页面。
手动编写servlet实现
实现servlet接口(javax.servlet.Servlet)
- 重写service方法(service方法每次请求都会调用一次)
在WebContent/WEB-INF/web.xml中配置servlet的访问路径 。浏览器访问servlet的路径
web.xml(新建web工程的时候,eclipse自动创建出来的)的位置:
把项目部署到tomcat中,去启动tomcat。在地址栏中输入信息,访问servlet
<servlet>元素是配置Servlet所用的元素。
<servlet-mapping>元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在地址栏输入对应的映射路径就可以访问你的servlet。
<servlet>
<!-- 给Servlet 配置一个名字 -->
<servlet-name>Hello</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.lmx.servlet.Hello</servlet-class>
</servlet>
<!-- mapping映射设置 -->
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<!--url-pattern(访问路径) 是给 servlet 程序配置一个访问地址
/hello 表示 http://ip地址:端口号/工程名/配置的地址
实际地址:http://127.0.0.1:8080/day06/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
修改web.xml后必须重启服务器才会生效
Servlet的生命周期
1)构造 servlet,然后使用 init 方法将其初始化。
2)处理来自客户端的对 service 方法的所有调用。
3)从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。
HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!
模拟Get请求和Post请求的分发
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException { // 将servletRequest对象强转成为 HttpServletRequest对象
HttpServletRequest httpRequest = (HttpServletRequest) req;
// 获取请求的方式
String method = httpRequest.getMethod();
// get请求获取到"GET" ,post请求获取到"POST"字符串
System.out.println("请求的方式:" + method);
// 根据请求的方式 执行不同的方法去做不同的处理
if ("GET".equals(method)) {
doGet();
} else if ("POST".equals(method)) {
doPost();
}
} public void doPost() {
System.out.println("这是POST请求的处理方法");
} public void doGet() {
System.out.println("这是GET请求的处理方法");
}
继承HttpServlet类实现我们自己的Servlet程序
1)首先创建一个Class,去继承HttpServlet类
2)重写httpServlet 中的 doGet方法和doPost方法实现具体的业务逻辑操作
3)需要在web.xml文件中配置Servlet的请求地址。
ps:tomcat关联源码下载的包如下图所示。

为什么我们继承HttpServlet,就可以实现了Servlet程序呢?
因为HttpServlet继承了GenericServlet,而在GenericServlet类中它又实现了Servlet接口。
所以我们在实现开发中,只需要继承HttpServlet类,并且根据你自己的业务需要重写doGet()请求和doPost()请求即可
通过Eclipse自动新建一个Servlet程序
Servlet类的继承体系

ServletConfig类
ServletConfig表示Servlet在web.xml文件中配置的配置信息。
a) ServletConfig类的三大作用
1.获取Servlet在web.xml文件中配置的Servlet名称(也就是servlet-name的值<servlet-name>ConfigServlet</servlet-name>)。
2.获取Servlet初始化信息。(web.xml文件中<Servlet>标签中 <init-param>的初始化信息 )
3.获取ServletContext域对象
由文档可知configuration 是在初始化中获取信息。由Tomcat创建,并传入
A servlet configuration object used by a servlet container to pass information to a servlet during initialization.
所以init()方法必须勾选上
ServletContext
什么是ServletContext?
第一:ServletContext是一个接口。
第二:ServletContext是一个域对象!
第三:每个Web工程,都对应一个ServletContext对象!
ServletContext有什么作用?
第一:ServletContext可以获取web.xml文件中的配置上下文参数 -----------<context-param>:它可以配置整个web工程的上下文参数
第二:ServletContext可以获取web工程在服务器的工程名
第三:ServletContext可以获取web工程中文件夹或文件在服务器硬盘上的绝对路径
第四:ServletContext可以设置、获取web工程的全局属性
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 获取ServletConfig对象
ServletConfig config = getServletConfig(); // 获取Servlet的上下文对象
ServletContext context = config.getServletContext(); // 获取web.xml文件中配置的参数的值
// 正确。ServletContext只能获取context-param配置的参数
String passwordValue = context.getInitParameter("password");
System.out.println("获取context-param参数:" + passwordValue); // ServletContext无法获取Servlet中配置的init-param参数
String usernameValue = context.getInitParameter("username");
System.out.println("获取servlet配置的init-param参数:" + usernameValue);
}
在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的。而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servlet配置会以注解的形式直接写到代码里面了,比如@WebServlet。 当然如果你用老的项目导入,可以选择Dynamic web module version这个选项设成2.5,这样web.xml就会自动更新了。
1.接口作为参数和返回值,都是同样的作用,所有继承了这个接口的类,都可以使用。也就是说,你给这个方法传参数的时候,可以把继承了这个接口的类的实例传给这个方法,同样的道理,你可以把继承了这个接口的类返回。
2.接口做为参数传递,传递的是实现了接口的对象;
接口作为类型返回,返回的是实现了接口的对象。
Servlet小结

Tomcat & Servlet的更多相关文章
- What is the difference Apache (Http Server) and Tomcat (Servlet Container)
The Apache Project The Apache Project is a collaborative software development effort. Its goal is to ...
- TOMCAT ---> servlet概念
1 TOMCAT ---> servlet概念 2 TOMCAT 目录结构 (各个文件夹都存放什么东西) 3 TOMCAT 程序的层级 web | |---- js,jsp,html,css ( ...
- Tomcat&Servlet
Tomcat&Servlet 一.web开发相关的概念 1. 软件架构 1.1 C/S架构 C:Client客户端, S:Server服务器 比如:QQ.微信.大型网游 优点: 显示效果炫 安 ...
- Android网络(3):HttpClient作client,Tomcat Servlet作server的交互演示样例
前面相继介绍了Android网络编程里的Socket传输图片.HttpURLConnection,今天看HttpClient. 第一部分:JavaEE版的Eclipse配置Tomcat [备注:开发后 ...
- Web开发之Tomcat&Servlet
<!doctype html>01 - JavaEE - Tomcat&Servlet figure:first-child { margin-top: -20px; } #wri ...
- tomcat&servlet初记
tomcat&servlet初记 1. web相关概念 2. web服务器软件的学习:tomcat 3. servlet入门学习 web相关概念 1,软件架构 1,cs架构:客户端/服务器端 ...
- JavaWeb基础(day15)( http + tomcat + servlet + 响应)
HTTP+Tomcat+Servlet+响应 HTTP HTTP 超文本传输协议(Hyper Text Transfer Protocol ),一种网络协议. 协议的组成和过程 HTTP协议由 ...
- tomcat servlet 线程
在服务器里,有一个servlet,当客户端第一次访问服务器时,tomcat会 帮我们建一个servlet的对象出来,(注意: tomcat里面可能部署了10个Servlet,如果某一个Servlet从 ...
- Tomcat+Servlet面试题都在这里
下面是我整理下来的Servlet知识点:  图上的知识点都可以在我其他的文章内找到相应内容. Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 Tomcat的缺省端口是多少,怎么修改 ...
- Tomcat &servlet字符集编码问题
1.字符编码的原由 1.1 request和response的默认编码是? 如果未指定字符编码,则Servlet规范要求使用ISO-8859-1的编码. HTTP消息正文(请求或响应)的字符编码在Co ...
随机推荐
- IO流_演示键盘录入
读取一个键盘录入的数据,打印到控制台上 键盘本身就是一个标准的输入设备,对于java而言,对于这种输入设备都有相应的对象在System类中 import java.io.IOException; im ...
- Java中关于AbstractQueuedSynchronizer的入门(一)
备注:博文仅仅是学习过程中的零散记录,后期整理. AbstractQueuedSynchronizer的简单介绍可以网上搜索,简单了解字段作用. 示例代码,分析获取锁的过程: import java. ...
- 「JoyOI1080」N皇后
这是菜鸡的我第一次写这类题目: 题意:就是在N*N的棋盘上,每一行,每一列,所有的对角线都只能有一个棋子. 先分析:假若N=4: 则为其中的一种答案.要输出左右的解,肯定要枚举出所有的解.那么非常自然 ...
- Qt 获取文件夹下所有文件
Qt 获取文件夹下所有文件代码如下: QStringList getFileNames(const QString &path) { QDir dir(path); QStringList n ...
- 项目Alpha冲刺 2
作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 进行github实战训练,锻炼团队合作能力 1.团队信息 队名:火鸡堂 队员 ...
- PAT A1014 Waiting in Line (30 分)——队列
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
- 利用 ProtoThreads实现Arduino多线程处理(2)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 感谢小V分享给大家的博文. 我在做产品设计的课题的时候,小五义推荐我使用Protothrea ...
- Android 解决在初次打开Activity加载布局文件时,ScrollView滚动条不在顶部的问题
出现这种问题的情况列举:ScrollView中嵌套有(包括自定义)的ListView,GridView时,会出现这种情况 解决办法: 1.在布局加载时让ScrollView上面的那个控件聚焦,具体做法 ...
- EF性能优化-有人说EF性能低,我想说:EF确实不如ADO.NET
十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转 ...
- [Spark][Python]groupByKey例子
Spark Python 索引页 [Spark][Python]sortByKey 例子 的继续: [Spark][Python]groupByKey例子 In [29]: mydata003.col ...