1、Servlet概述

2、编写Servlet的开发步骤
a、建立标准的JavaWeb应用目录
FirstApp
WEB-INF
classes
lib
web.xml
b、编写一个类,实现javax.servlet.Servlet接口
package com.itheima;

import javax.servlet.*;
import java.io.*;
public class HelloServlet implements Servlet{
public void destroy(){}
public String getServletInfo(){
return null;
}
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
IOException{
String data = "hello servlet";
res.getOutputStream().write(data.getBytes());
}
public ServletConfig getServletConfig(){return null;}
public void init(ServletConfig config)
throws ServletException
{}
}
c、进入HelloServlet的目录,执行javac -d . HelloServlet.java进行编译(要把servlet-api.jar加入到classpath中)
d、Servlet映射到某个地址上:修改web.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.itheima.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
e、部署到Tomcat中
f、访问地址:http://localhost:8080/FirstApp/HelloServlet

3、编写Servlet也可以继承javax.servlet.GenricServlet
如果是与HTTP协议有关,也可以继承javax.servlet.http.HttpServlet,至少要覆盖doXXX方法。不能覆盖service方法,他有标准实现。

Tip:
servlet-api.jar:
含两个包:
javax.servlet.*:通用的类放在此处,与具体协议无关
javax.servlet.http.*:专门服务于HTTP协议。

Tip:
修改MyEclipse生成的Servlet模板:
MyEclipse8.5:在安装目录中搜索*wizard*(com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar)的文件,打开,找到Servlet.java文件,修改即可(注意:修改前先备份,推出MyEclipse)

4、Servlet的生命周期
4.1默认情况下,Servlet类在第一次访问时才会被容器实例化,并接着调用init方法进行初始化。
针对用户的每次访问,只初始化一次,但service方法会调用多次。
4.2希望在容器加载应用时就初始化Servlet?
解决办法:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.itheima.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup> //取值自然整数,标识了Servlet的加载顺序
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

Tip:Servlet的映射细节
a、同一个Servlet可以被映射到多个URL地址上
b、Servlet的映射支持通配符*
通配符写法有2种:
以*开头,以扩展名结尾,比如*.do
以/开头,以*结尾,比如/action/*

知识点:使用通配符时,如果找到多个匹配,到底执行的是哪个Servlet原则:绝对匹配--->从前往后匹配---->/开头的匹配优先级高
如果某个Servlet的映射路径为一个"/",那么称之为默认Servlet。负责处理没有的配置。
当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。

5、线程安全问题
实现javax.servlet.SingleThreadModel的Servlet有2中解决线程安全问题的办法:(不同的服务器不同)
a、对资源进行同步处理(不可行)
b、搞了多个Servlet的对象为您服务(不可行):Tomcat的实现了此种方式。

避免资源冲突的原则:尽量使用局部变量;实在局部不了的,一定要做同步处理。同步代码块尽量包围少的代码。
在Servlet尽量使用局部变量。

6、如何得到Servlet中的配置参数:ServletConfig
作用:代表针对Servlet的参数配置。
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
7、ServletContext
7.1ServletContext:当容器加载JavaWeb应用时,会为每一个JavaWeb应用创建对应的ServletContext对象(每个应用只有一个)。
JavaWeb应用的总管。
获取ServletContext对象的引用:ServletConfig.getServletContext()
ServletContext还是一个域对象:域对象实际上其内部维护了一个Map<String,Object>
它的生命周期是整个web应用的生命周期。

a、实现Servlet间的数据共享
b、请求转发
c、读取资源文件的三种方式

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

2、Servlet概述
3、编写Servlet的开发步骤
4、Servlet的生命周期
5、如何得到Servlet中的配置参数:ServletConfig
6、线程安全问题
7、ServletContext
a、实现Servlet间的数据共享
b、请求转发
c、读取资源文件的三种方式

Servlet知识的更多相关文章

  1. JavaWeb(一)-Servlet知识

    一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...

  2. 这些Servlet知识你一定要知道,金九银十大厂面试官都爱问

    前言 Servlet是服务器端的Java应用程序,可以生产动态Web页面.透过JSP执行过程可以知道JSP最终被编译成一个.class文件,查看该文件对应的Java类,发现该Java类继承自org.a ...

  3. Servlet基础知识总结

    Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...

  4. Tomcat是如何加载Spring和SpringMVC及Servlet相关知识

    概述 大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西) 其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了 ...

  5. JavaWeb开发之Servlet

    1. Servlet有关概念和前置知识 1.1 什么是动态网页 如果浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动态页面. 动态网 ...

  6. Servlet 知识点总结(来自那些年的笔记)

    2018年04月15日 20:16:01 淮左白衣 阅读数:350   版权声明:转载请给出原文链接 https://blog.csdn.net/youngyouth/article/details/ ...

  7. Struts2(二)— Result结果配置、Servlet的API的访问、模型驱动、属性驱动

    一.Result结果配置 1.全局和局部结果 ​ 平常我们设置跳转页面,是在action标签里面加上 result标签来控制,这种设置的页面跳转,称之为局部结果页面但是我们有时候在很多个action里 ...

  8. Java复习10.Servlet编程

    Java复习10. Servlet编程知识 20131008 前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面 ...

  9. (三)Servlet 知识点总结(来自那些年的笔记)

    (史上最全知识汇总)转载请贴上原文链接! 作者:淮左白衣 写于 2018年4月15日20:14:55 如果,碰巧你打开了本篇博客,相信我,你想要的servlet知识,这里应该都能找到!! 目录 (史上 ...

随机推荐

  1. 45、Docker 加 tensorflow的机器学习入门初步

    [1]最近领导天天在群里发一些机器学习的链接,搞得好像我们真的要搞机器学习似的,吃瓜群众感觉好神奇呀. 第一步 其实也是最后一步,就是网上百度一下,Docker Toolbox,下载下来,下载,安装之 ...

  2. jq之ajax以及json数据传递

    <html> <head><meta http-equiv="Content-Type" content="text/html; chars ...

  3. HPUX 只取syslog.log当前三天的信息

    LOG_DAYS=1todays_date=`date +%m:%d:%Y`current_date=`echo $todays_date | sed 's/://g'`day=`echo $toda ...

  4. mysql计算时间差函数

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDI ...

  5. DSP下的#program

    2014年7月22日 最近调试使用TMS320C6713的片子调试SDRAM,中间经过很多波折,这里就不吐槽了. 想将数据或者代码放到SDRAM上一定要用到#pragma .查阅资料后,感觉百度文库的 ...

  6. 去除bootstrap模态框半透明阴影

    当使用bootstrap模态框默认自带半透明阴影,如果想要去除阴影,需要怎么做呢? 今天在项目中我遇到了这个问题,想要去除模态框的阴影,试了好久都没解决.后来问同事的时候才知道,当模态框弹出后,会加上 ...

  7. webpack入门(转载)

    阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本 ...

  8. js获取IP和MAC地址

    1.IP 百度一下有很多 可以用这个 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> ...

  9. Rust的几个预测

    写程序多年,语言也用过不下十种,对于Rust有种亲人的感觉,就像在梦中见到过似的.现在对于Rust特做出以下一些预测,希望Rust会有更大的影响力. 1. 当前的Rust的核心功能现以比较稳定,可以用 ...

  10. AndroidStudio安装教程(Windows环境下)

    AndroidStudio官网下载:http://android-studio.org/    可以更具自己喜欢的版本下载,个人推荐2.2版本以上,因为开发和运行效率快,高很多. Android St ...