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 ...
随机推荐
- BZOJ4416: [Shoi2013]阶乘字符串
可以大胆猜想n>21时无解,至于依据,不开O2,1s,n<=21刚好能卡过去= = 并不会证= = #include<cstdio> void up(int& a,in ...
- Html中行内样式的设置
Html中行内样式的设置.. <html> <head> <title>显示的页面选项卡标题</title> <style type=" ...
- AE开发使用内存图层
AE开发中,有时需要从磁盘中读取一些文件信息如坐标点转为图层并进行分析,此过程并不需要坐标点入库之类的操作,就可以创建一个内存图层解决问题.创建内存图层需要用到InMemoryWorkspaceFac ...
- VirtualBox Guest Additions 在CentOS中无法安装的解决方法
安装时出现一步错误查看log为(log文件是 /var/log/vboxadd-install.log): /tmp/vbox.0/Makefile.include.header:94: *** Er ...
- webstorm常用快捷键
常用快捷键—Webstorm入门 提高代码编写效率,离不开快捷键的使用,Webstorm拥有丰富的代码快速编辑功能,你可以自由配置功能快捷键. 快捷键配置 点击“File”-> “setting ...
- 深入理解javascript原型和闭包(1)——一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...
- [Data Structure & Algorithm] 七大查找算法
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找.本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找.插值查找以及斐波那契查找 ...
- 《征服 C 指针》摘录6:解读 C 的声明
一.混乱的声明——如何自然地理解 C 的声明? 通常,C 的声明 int hoge; 这样,使用“类型 变量名;”的形式进行书写. 可是,像“指向 int 的指针”类型的变量,却要像下面这样进行声明: ...
- C/C++内存、指针问题
转 http://wenku.baidu.com/link?url=tN9Fac-XyB2F7V7xwYcRclu464G2c8ybYMBxNXbBGQJXEEy0vJxTOzcAeVrFrqYLfj ...
- Nginx概念及基础安装--详细讲解
1.主要内容: Nginx的基础 特性 配置部署 优化(了解) 2.Nginx 是什么? Nginx是一个开源的,支持高性能,高并发的www ...