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 ...
随机推荐
- 深夜重温JavaScript中的对象和数组
这一块实际上已经学过了,因为没有学好,在工作过程中遇到一些对象或者数组的操作,会去百度查找,浪费了许多宝贵的时间,所以特地再拐过头来重新学习. 对象 基本概念: 对象这种基本的数据结构还有其他很多种叫 ...
- JavaScript中的正则表达式(终结篇)
JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...
- SAX与DOM
http://www.cnblogs.com/zhulin/archive/2012/05/03/2480962.html 在解析xml时(如浏览器解析html标签),主要存在两种方式:SAX模式和D ...
- SaaS模式的软件
SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式.它与"on-demand ...
- mysql_fetch_array,mysql_fetch_row,mysql_fetch_assoc区别
array mysql_fetch_array ( result [, int result_type] ) 返回:根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE. int ...
- centos7 没有iptables服务 file or directory? 用secureCRT登录centos?
cenetos7 采用systemd来管理服务 centos7 没有采用传统的iptables服务, 而是采用的firewalld 服务, 以及firewall-cmd 命令; 也可以采用传统的 ip ...
- 利用pg_stat_activity进行问题排查
pg_stat_activity是一个非常有用的视图,可以帮助排查pg的一些问题(如连接数目过多问题).pg_stat_activity每行展示的是一个“process”的相关信息,这里的“proce ...
- 关于 Word Splitting 和 IFS 的三个细节
在 Bash manual 里叫 Word Splitting,在 Posix 规范里叫 Field Splitting,这两者指的是同一个东西,我把它翻译成“分词”,下面我就说三点很多人都忽略掉(或 ...
- 个性化设置phpMyAdmin,去掉“以树形显示数据库”,禁用“发送错误报告”
个性化设置phpMyAdmin 在使用phpMyAdmin 3.5.8.2时,发现: 如果数据库有相同的前缀,左边数据库导航会把前缀合并,即所谓的“以树形显示数据库”,真的有点不习惯,如下图所示: 不 ...
- Android四大组件知识整理
1. Activity 1.1 什么是Activity? Activity是Context的子类,并可以处理与窗体用户的事件: 1.2 Activity的生命周期 不存在->`onCreate( ...