Servlet知识
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知识的更多相关文章
- JavaWeb(一)-Servlet知识
		
一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...
 - 这些Servlet知识你一定要知道,金九银十大厂面试官都爱问
		
前言 Servlet是服务器端的Java应用程序,可以生产动态Web页面.透过JSP执行过程可以知道JSP最终被编译成一个.class文件,查看该文件对应的Java类,发现该Java类继承自org.a ...
 - Servlet基础知识总结
		
Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...
 - Tomcat是如何加载Spring和SpringMVC及Servlet相关知识
		
概述 大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西) 其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了 ...
 - JavaWeb开发之Servlet
		
1. Servlet有关概念和前置知识 1.1 什么是动态网页 如果浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动态页面. 动态网 ...
 - Servlet 知识点总结(来自那些年的笔记)
		
2018年04月15日 20:16:01 淮左白衣 阅读数:350 版权声明:转载请给出原文链接 https://blog.csdn.net/youngyouth/article/details/ ...
 - Struts2(二)—  Result结果配置、Servlet的API的访问、模型驱动、属性驱动
		
一.Result结果配置 1.全局和局部结果  平常我们设置跳转页面,是在action标签里面加上 result标签来控制,这种设置的页面跳转,称之为局部结果页面但是我们有时候在很多个action里 ...
 - Java复习10.Servlet编程
		
Java复习10. Servlet编程知识 20131008 前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面 ...
 - (三)Servlet 知识点总结(来自那些年的笔记)
		
(史上最全知识汇总)转载请贴上原文链接! 作者:淮左白衣 写于 2018年4月15日20:14:55 如果,碰巧你打开了本篇博客,相信我,你想要的servlet知识,这里应该都能找到!! 目录 (史上 ...
 
随机推荐
- XML语法
			
xml文档内容如下:(必须全英文输入,空格都要是英文的!) 1.文档声明 2.元素 3.属性 4.注释 5.CDATA区.特殊字符 6.处理指令 <?xml version="1.0& ...
 - window10系统安装SQL数据库和小蝴蝶的问题
			
最近刚刚升了windows10系统.由于以前一直使用的是SQL2008数据库,所以也就没有下载最新的数据库,但是在安装的过程中一直提示让重启,重启了很多回也没有用. 在启动SQL2008安装程序的时候 ...
 - nginx缓存引发的问题
			
请求为f.chinasoft.com/file f.chinasoft.com 域名指向slb(3.3.3.3) 业务方式: ios-->slb(3.3.3.3)-->ecs集群(每一台e ...
 - DAO模式应用实例
			
首先在数据库中建好一个表. 然后创建一个MsterDao类的接口 package com.beiwo.epte.dao; import com.beiwo.epte.entity.Master; pu ...
 - solr清空全部索引
			
http://blog.csdn.net/qing419925094/article/details/42142117
 - Weka使用常见问题
			
1.中文乱码 办法:找到RunWeka.ini文件,将Cp1252替换成数据对应的字符集编码,比如utf-8,cp936(简体中文),cp950(繁体中文).
 - grep sed 大批量替换字符串
			
sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...
 - [Qt系列] 何处下载,如何安装!
			
时间:2016.07.29 -------------------------------------------- 其实方法有很多! 我的思路是想独立使用它,不想联合VS. 下载地址:http:// ...
 - Install Shield 打包教程
			
我的是已经下载过打包工具InstallShield2013LimitedEdition,没有下载的只有下面那个灰色的的图标,不过没关系选中灰色的点确定直接跳到下载页面了.下载完成后再重新添加安装和部署 ...
 - CMD打包文件,解压文件
			
压缩%ProgramFiles%\Winrar\rar a c:\123.rar c:\123解压%ProgramFiles%Winrar\unrar.exe x c:\sp\sp.rar c:\sp