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 ...
随机推荐
- Linux 内核数据结构:双向链表
Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到.我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为 ...
- Java开发面试
有很多文章说面试相关的问题,有国内也有国外的,但是我相信不少人,特 别是新人看完后还是觉得比较虚比较泛,似乎好像懂了,但是一遇到面试还 是有些手无足措或者重复犯一些错误.本篇文章正是结合实际经 ...
- sqlserver text/ntext 字段读取
sqlserver ntext 字段在读取时返回值 net.sourceforge.jtds.jdbc.ClobImpl@555bc78f 需要在连接数据库的URL后边加上";useLOBs ...
- SH Script Grammar
http://linux.about.com/library/cmd/blcmdl1_sh.htm http://pubs.opengroup.org/onlinepubs/9699919799/ut ...
- 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
错误提示: psql: could not connect to server: No such file or directory Is the server running locally and ...
- Android ViewPager sharedpreferences
http://www.cnblogs.com/dwinter/archive/2012/02/27/AndroidViewPager%E5%A4%9A%E9%A1%B5%E9%9D%A2%E6%BB% ...
- (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...
- PF_INET 和 AF_INET 的区别
在写网络程序的时候,建立TCP socket: sock = socket(PF_INET, SOCK_STREAM, 0); 然后再绑定本地地址或连接远程地址时需要初始化sockaddr_in结构, ...
- jquery.roundabout.js图片叠加3D旋转插件多功能图片翻转切换效果
http://www.17sucai.com/pins/4880.html DEMO演示地址:http://www.17sucai.com/pins/demoshow/4880
- kxbdSuperMarquee.js滚动的神器-推荐
http://code.ciaoca.com/jquery/kxbdmarquee/ 版本:jQuery v1.3.2+ 查看 Demo 下载 jQuery kxbdMarquee 文档目录 使用方法 ...