Servlet笔记
来源:互联网 发布:网络暑假工招聘 编辑:程序博客网 时间:2024/04/30 20:57
web Application的概念
1、web Application Name
1、WEB-INF
web.xml
该web app的配置文件
lib
该web app用到的库文件
classes
存放编译好的servlet
2、META-INF
存放该web app的上下文信息,符合J2EE标准
2、Web Application可以直接放在webapp下面
3、也可以通过配置文件指定到其他目录 <host>里面
<Context path=“/虚拟路径名“ docBase=”目录位置" debug="0" reloadable="true"/>
Tomcat的目录结构
bin/ 二进制可执行文件和脚本
catalina start stop
catalina debug run exit
common/ Catalina本身和web应用可加载的类目录
conf/ 配置文件目录
logs/ 日志目录
server/ 服务器所需的类库目录
shared/ Web App共享的类库
webapps/ Web应用所存放的目录applications
work/ Tomcat的工作目录(存放jsp产生的class文件)
temp/ 存放临时产生的文件
创建Servlet
1、XXX extends HttpServlet
2、Override doGet doPost(重写方法)
3、copy to WEB-INF/classes
4、web.xml
1、<servlet><servlet-name><servlet-class></servlet>
例子:
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
2、<servlet-mapping><url-pattern> /
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>
注意:web app根路径(url)必须/开头
5、restart server
Servlet的生命周期
生命全过程:
加载 ClassLoader
实例化 new
初始化 init(ServletConfig)
处理请求 service doGet doPost
退出服务 destroy()
只有一个对象
API中的过程:
init()//只执行一次, 第一次初始化的时候
public void init(ServletConfig?config) throws ServletException
service()
public void service(ServletRequest?req, ServletResponse?res)
throws ServletException, java.io.IOException
destroy()//webapp 退出的时候
public void destroy()
init
init(servletconfig config)
this.config = config
init();
重写必须得super.init(config)
不然不能使用this.getServletConfig
当然也就不能用getInitParameter();
我们只需要重写init();
Servlet编程接口
GenericServlet是所有Servlet的鼻祖
用于HTTP的Servlet编程都通过继承 javax.servlet.http.HttpServlet 实现
请求处理方法:(分别对应http协议的7种请求)
1、doGet 响应Get请求,常用
2、doPost 响应Post请求,常用
3、doPut 用于http1.1协议
4、doDelete 用于http1.1协议
5、doHead 仅响应Get请求的头部。
6、doOptions 用于http1.1协议
7、doTrace 用于http1.1协议
实例的个数: 在非分布的情况下,通常一个Servlet在服务器中有一个实例
获取表单信息
通过HttpServletRequest的getParameter()方法来获得客户端传递过来的数据
getParameter()方法返回一个字符串类型的值
getParameterNames()返回Enumeration类型的值,getParameterValues()返回一个字符串数组
Web上保持状态的手段:
cookie session application persistence
处理Cookie
Http协议的无连接性要求出现一种保存C/S间状态的机制
Cookie:保存到客户端的一个文本文件,与特定客户相关
Cookie以“名-值”对的形式保存数据
创建Cookie:new Cookie(name,value)
可以使用Cookie 的setXXX方法来设定一些相应的值
setName(String name)/getName()
setValue(String value)/getValue()
setMaxAge(int age)/getMaxAge()
利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端
利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组
设置Cookie
SetCookies.java
读取Cookie
ShowCookies.java
1:服务器可以向客户端写内容
2:只能是文本内容
3:客户端可以阻止服务器写入
4:只能拿自己webapp写入的东西
5:Cookie分为两种
属于窗口/子窗口(放在内存中的)
属于文本(有生命周期的)
6:一个servlet/jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet/jsp读到
(路径 = URL)(路径 != 真实文件路径)
会话跟踪(session)
Session
在某段时间一连串客户端与服务器端的“交易”
在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,
服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234
可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。
通过HttpSession来读写Session
规则
如果浏览器支持Cookie, 创建Session的时候会把SessionID保存在Cookie里
如果不支持Cookie, 必须自己编程使用URL重写的方式实现Session
response.encodeURL()
转码
URL后面加入SessionId
Session不象Cookie拥有路径访问的问题
同一个application下的servlet/jsp可以共享同一个session, 前提示同一个客户端窗口.
HttpServletRequest中的Session管理方法
getRequestedSessionId():返回随客户端请求到来的会话ID。可能与当前的会话ID相同,也可能不同。
getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSession
isRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为true
isRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为true
isRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存在),返回false
HttpSession的常用方法
getAttributeNames()/getAttribute()
getCreateTime()
getId()
getMaxInactiveInterval()
invalidate()
isNew()
setAttribute()
setMaxInactivateInterval()
Session总结
1、服务器的一块内存(存key-value)
2、和客户端窗口对应(子窗口)(独一无二)
3、客户端和服务器有对应的SessionID
4、客户端向服务器端发送SessionID的时候两种方式:
5、cookie(内存cookie)
6、rewriten URL
7、浏览器禁掉cookie,就不能使用session(使用cookie实现的session)
8、如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie
Application
用于保存整个WebApplication的生命周期内都可以访问的数据
在API中表现为ServletContext
通过HttpServlet的getServletContext方法可以拿到
通过ServletContext的 get / setAttribute方法取得/设置相关属性
TestServletContext.java
servlet中的请求转发
RequestDispatcher接口对象允许将请求转发到其他服务器资源
通过RequestDispatcher的forward(HttpServletRequest,HttpServletResponse)方法可以将请求转发
通过ServletContext的getRequestDispatcher(String url)方法来获得RequestDispatcher对象,并且指定转发的目标url资源
可以通过HttpServletRequest的setAttribute(String name,String value)来设置需要传递的参数,然后在代理servlet中就可以
使用HttpServerRequest的getAttribute(String name)来获得对应的值
数据库处理以及在Servlet中使用Bean
广义javabean = 普通java类
狭义javabean = 符合Sun JavaBean标准的类
在Servlet中使用Bean和在通常程序中使用Bean类似
属性名称第一个字母必须小写,一般private,比如:private productId
一般具有getters and setters
要具有一个参数为空的构造方法
但Bean不应具有GUI表现
一般是用来实现某一业务逻辑或取得特定结果
- 【servlet】servlet 笔记
- servlet 理解 --servlet笔记
- servlet笔记
- Servlet笔记
- Servlet笔记
- Servlet笔记
- Servlet 笔记
- servlet笔记
- Servlet笔记
- servlet 笔记
- servlet笔记
- servlet笔记
- Servlet笔记
- servlet笔记
- Servlet笔记
- servlet笔记
- Servlet笔记
- servlet 笔记
- linux——vi编辑器基本使用方法
- SQL Alias
- ORA-16038,ORA-19809,ORA-00312
- eclipse颜色设置以及常用快捷键
- C# 异步调用(存档)
- Servlet笔记
- 唐骏资料
- COM编程入门
- 《程序员》火热七月:中国ISV生存现状调查报告
- String和StringBuffer的区别
- 关于 FROM tableA,tableB 和 tableA LEFT JOIN tableB on 的区别
- 采用反射模拟简单的ORMapping
- Sql Server 导出数据库结构
- apt-get 命令