08 Servlet
* Servlet开发动态的Web资源的技术。
* Servlet技术
* 在javax.servlet包下,接口。
* 一个小的java程序,运行在服务器端,接收和响应从客户端(浏览器)发送过来的请求。
* Servlet开速入门
* 简单类,实现Servlet接口。(5个方法)
* 继承某个类(GenericServlet),重写一个方法。
* 重写public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException方法
* 配置Servlet(*****)
* 带包编译
* javac -d . HelloServlet.java
* javax.servlet 不存在
* 解决问题:
设置临时环境变量:set classpath=%classpath%;servlet-api.jar
* 配置Servlet
* 在文件中配置:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
* 启动服务器
* 访问:http://localhost:80/website/hello
在MyEclipse中开发Servlet
* 配置Serlvet,项目web.xml中配置
Servlet的生命周期
* 生命周期:实例创建,服务,销毁。
* Servlet实例被创建后,立即调用init方法,进行初始化。
init(ServletConfig config);
* 从客户端发来的请求,都被service方法处理
void service(ServletRequest req, ServletResponse res);
* 销毁调用destroy方法。
void destroy()
总结:
- 第一次访问的时候,服务器创建了Servlet的实例,立即调用init方法进行初始化,init只调用一次。
- 从客户端发送过来的请求,调用service方法去处理,请求有多少次,service就执行多少次。
- 服务器关闭就销毁Servlet实例,调用destroy方法,调用一次。
Servlet
|
GenericServlet
|
HttpServlet
* 编写一个普通的类,继承GenericServlet,初始化操作,重写init()的方法。
* 编写一个普通的类,继承HttpServlet,重写doGet和doPost方法。
* 如果再编写一个Servlet程序。
* 编写一个普通的类,继承HttpServlet。
* 重写doGet()和doPost()方法
* 配置Servlet。(web.xml)
* doGet和doPost逻辑相同,互相调用,简化编程。
doGet()
* 通过名称,查询数据,返回到页面。
doPost()
doGet()
* 右键 -- 选择servlet -- 起名字 -- 选择doGet和doPost
-- 配置web.xml -- 起Servlet名称 -- 设置访问路径
* 修改模板
* 找到MyEclipse安装路径,找到com.genuitec.eclipse.wizards.xxx.jar
* (千万别解压)-- 右键 -- 打开方式 -- 选择压缩工具 -- templates -- 找到Servlet.java
* MyEclipse先关闭。
* 在<servlet>
<load-on-startup>2</load-on-startup>
</servlet>
* 值是正整数,值越小,优先级越高。
* <url-pattern>/demo</url-pattern>
* 完全路径匹配 以/开头的 /demo
* 只能/demo去访问
* 目录匹配 以/开头的 /* /demo/*
* /xxx都可以访问
* 扩展名匹配 不能以/开头 *.do *.action *.xx
* xxx.do
* 优先级:完全路径匹配 > 目录 > 扩展名匹配
* 相对路径
* 一个文件相对与另外一个文件的位置。
* 写法:不能以/开头 ../demo ./demo demo
* 访问Demo8的Servlet: http://localhost/day08/demo8
* 访问demo1.html的文件:http://localhost/day08/demo1.html
* 相对路径: ./demo8 demo8
* http://localhost/day08/html/demo2.html
* http://localhost/day08/demo8
* 相对路径: ../demo8
* 平时开发中少写相对路径,写绝对路径。
* 绝对路径
* http://localhost/day08/demo8"
* 简便写法:/day08/demo8
* 绝对路径以/开头。
* 服务器和客户端的绝对路径
* 客户端的绝对路径(经常使用)
* /day08/demo8
* 服务器的绝对路径(很少使用)
* /demo8
* String getServletName() 获取Servlet的名称
* ServletContext getServletContext()
* Enumeration getInitParameterNames() 获取初始化参数所有的名称
* String getInitParameter(String name)
* Enumeration getInitParameterNames()
实现数据共享
* void setAttribute(String name, Object object)
* Object getAttribute(String name)
* void removeAttribute(String name)
读取资源文件
* InputStream getResourceAsStream(String path) 通过路径获取文件的输入流
* String getRealPath(String path) 通过路径获取文件的绝对磁盘路径
* tomcat/web.xml中
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value> //本是false,但改成了true;只改这个
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
08 Servlet的更多相关文章
- 关于Cookie的有关内容
1.首先谈谈http协议与状态保持. Http协议本身是无状态的,这与http协议本来的目的是相符的,客户端只需要简单的向服务器发出请求操作,然后服务器对请求作出响应.无论客户端还是服务器都没有必要记 ...
- DWR搭建以及使用教程
DWR搭建以及使用教程 DWR(Direct Web Remoting)是一个Ajax的开源框架,用于改善web页面与Java类交互的远程服务器端的交互体验,可以帮助开发人员开发包含AJAX技术的 ...
- Spring Boot → 08:嵌入式Servlet容器自定义
Spring Boot → 08:嵌入式Servlet容器自定义
- [技巧篇]08.Struts2拦截器中获取Servlet API方法
讲课中遇到的解决Session拦截器的后腿问题,还有如何在拦截器中获取Servlet API,这里留一个备注,方便学生查找
- Spring Boot 学习系列(08)—自定义servlet、filter及listener
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...
- 08.利用Easymock测试简单的servlet
1.首先导入需要使用的servlet的jar包 接下来我们编写一个登陆的servlet package com.fjnu.service; import java.net.HttpRetryExcep ...
- JSP数据交互(二)和Servlet基础
01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...
- Servlet目录
Servlet目录 课时1 Servlet概述12:30 课时2 servlet的第一个例子31:08 课时3 servlet的生命周期18:18 课时4 HttpServlet详细讲解31:43 ...
- HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问
HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问 代码下载地址: http://download.csdn.net/detail/poiuy19 ...
随机推荐
- 框架集(Framesets)
1.Frameset的使用 所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只 要 <FRAMESET> <FRAME> 即可,而所有框架标记 要放在一个总起的 htm ...
- zTree 循环树
/// <summary> /// 初始化第一次节点加载 /// </summary> /// protected string _menu = string.Empty; p ...
- C#+ AE 注意问题汇总(不断更新)
1.AE的COM对象释放问题尤其是IFeatureCursor 建议用 ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pObj); 或者 int iRefs ...
- Web jquery表格组件 JQGrid 的使用 - 7.查询数据、编辑数据、删除数据
系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...
- Java Web学习笔记8
上下文参数(context-param) 由于init-param是配置在<servlet>标签里的,只能有这个Servlet来读取,因此它不是全局的参数,不能被其他的Servlet读取. ...
- windows 10卸载自带软件
http://jingyan.baidu.com/article/14bd256e4ad268bb6c26126d.html http://jingyan.baidu.com/album/ae97a6 ...
- jvm
-Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配. 说明:如果-Xmx不指定或者指定偏小,应用 ...
- FreeCodeCamp练习笔记
CSS样式表: 嵌套:body是最外层包围其他所有HTML元素(标签),其中的元素样式都可覆盖body的样式. 覆盖:同一元素有多个样式,位置靠后的样式覆盖位置靠前的样式. id:id与位置无关,可任 ...
- TopHat
What is TopHat? TopHat is a program that aligns RNA-Seq reads to a genome in order to identify exon- ...
- maven项目常见问题
问题1:Maven项目,右键-update project后报错如下的解决办法: 1).DescriptionResourcePathLocationType Java compiler level ...