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知识,这里应该都能找到!! 目录 (史上 ...
随机推荐
- CCS实现input和img水平对齐的方法
在网页制作中,常将 input 和 img 放在同一行,img标签总是比input高出一个头,非常难看. CCS实现input和img水平对齐的方法 同时给input和img添加vertical-al ...
- WCF Misconfiguration: Security Not Enabled
Abstract: No transport or message security has been defined. Explanation: Applications that transmit ...
- @MappedSuperclass注解的使用说明
转载自:http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclas ...
- CheckedComboBoxEdit 重置初始化值的方法
CheckedComboBoxEdit ccbgb; ccbgb绑定方式ccbgb .Properties .DataSource =数据集; ccbgb.Properties.DisplayMemb ...
- sga_target大于sga_max_size数据库无法启动
环境:oracle 11g 单机 操作过程:由于修改SGA的大小,只修sga_max_size,没有修改sga_target,改导sga_max_size大于sga_target的大小,使得数据库无法 ...
- Picture Segmentation Using A Recursive Region Splitting Method
首先 区域分割的分割方法 首先得到一个区域,(一般已原图作为第一个区域) 然后得到该区域的直方图,选取最合适的峰值作为阈值,然后选择连接区域,然后把这些区域加入下一步要处理的区域中,然后重复第一步,直 ...
- iphone 开源汇总(转)
原文地址 http://blog.csdn.net/devday/article/details/6105793 扫描wifi信息: http://code.google.com/p/uwecaugm ...
- ubuntu 双线双网卡双IP实现方式
昨天金桥机房上架了一台多玩的测试机,系统是ubuntu9.04 X64的系统,母机IBM X336机器.用户需求是双线,故采用一个网卡配置电信地址,另一个网卡配置联通地址,安装好系统后配置好IP发现联 ...
- limux curl命令
linux curl命令很强大: http://blog.chinaunix.net/uid-14735472-id-3413867.html curl是一种命令行工具,作用是发出网络请求,然后得到和 ...
- 8086cpu-intel汇编指令简介
jcxz 有条件跳转指令,cx为跳转条件.如果(cx)==0则跳转到指定标号处.跳转地址在机器码中已相对位置(-128~127)给出. 相当于 if((cx)==0) ...