Servlet笔记.docx
《Servlet笔记.docx》由会员分享,可在线阅读,更多相关《Servlet笔记.docx(21页珍藏版)》请在冰豆网上搜索。
Servlet笔记
目录
第一章服务器环境搭建2
1.Tomcat服务器环境搭建2
2.tomcat文件结构2
第二章Servlet3
1.定义:
3
2.servlet的生命周期3
3.使用MyEclipse创建servlet流程3
4.WebProject文档目录说明4
5.web.xml的配置归纳4
[1]配置servlet类4
[2]配置Servlet的实例化顺序:
5
[3]配置初始化参数5
[4]配置ServletContext5
[5]配置Session有效时间6
6.doget()和dopost()向servlet发送请求的区别6
7.servlet的类和接口6
7.1javax.servlet包:
7
(1)Servlet接口:
7
(2)ServletConfig接口:
servlet配置对象7
(3)ServletContext接口:
ServletContext(服务器-公共空间)8
(4)ServletRequest接口:
9
(5)ServletResponse接口:
10
(6)Filter接口:
过滤器10
(7)ServletContextListener接口:
监听器12
7.2javax.servlet.http包:
13
(1)HttpSession接口:
session(服务器-浏览器空间)13
(2)HttpServletRequest接口15
(3)HttpServletResponse接口15
(4)HttpServlet类15
(5)Cookie类15
第三章常用技术归纳17
1.参数传递归纳:
17
2.在Servlet中操作数据库17
3.分页显示技术18
4.数据库连接池技术18
第一章服务器环境搭建
1.Tomcat服务器环境搭建
(1)环境变量配置
①java-path:
//配置JDK
②tomcat-path:
//配置服务器主目录
(2)服务器端口配置
在server.xml文件中Connector标签:
四位数,最多65523,但一般网络用80开头
(3)启动服务启:
执行Bin目录下的startup.bat脚本文件。
(4)浏览器中进入服务器
localhost:
8080//本机服务器
127.0.0.1:
8080//本机服务器
192.168.1.216:
8080//服务器ip地址:
端口号
2.tomcat文件结构
(1)在tomcat文件目录中新建项目
tomcat->webapps下新建项目文件夹
WEB-INF的文件结构
/classes:
servlet的class文件
/lib:
jar包
web.xml:
Servlet的配置文件
web.xml的全部内容
第二章Servlet
1.定义:
服务端的java程序。
servlet只有一个对象。
支持多线程,无成员属性,不会资源不一致。
方法变量属于各线程计数器管理。
2.servlet的生命周期
①浏览器:
http请求->服务器:
查找web.xml
②-->无Servlet对象就实例化Servlet->调用init()方法初始化->service()方法
有Servlet对象->调用service()方法(判断请求的类型,调用对应的方法)
③-->response()方法响应浏览器
④-->关闭服务器,调用destroy(),销毁对象。
3.使用MyEclipse创建servlet流程
①将Tomcat服务器添加到MyEclipse
Servers选项卡-ConfigureServersConnector
选择自己的服务器类型,指定路径,完成添加。
②创建web_project
javaEEversion:
JavaEE6-web3.0
Javaversion:
1.7
③创建Servlet继承HttpServlet,重写doGet()和doPost方法
④配置web.xml
servlet的名称、bao.类;
servlet映射的名称、路径
test1
Simple.test1
test1
/test1
⑤发布程序到服务器
DeployMyEclipseJ2EEProjecttoServer
⑥在浏览器发送请求
http:
//localhost:
8001/Servlet/test1
地址:
端口/项目名/类名
4.WebProject文档目录说明
webRoot根目录
META-INF:
配置文件
WEB-INF->
/lib:
jar包
web.xml:
将覆盖Tomcat服务器中的web.xml
5.web.xml的配置归纳
[1]配置servlet类
①servlet的名称、bao.类;②servlet映射的名称、路径
test1
Simple.test1
test1
/test1
[2]配置Servlet的实例化顺序:
demo01.Demo01
n
n为正整数:
在服务器启动的时候实例化该Servlet,
n为负整数:
在第一次请求的时候实例化该Servlet(默认)。
加载顺序:
越大越先加载。
[3]配置初始化参数
name
wangwu
[4]配置ServletContext
charset
utf-8
[5]配置Session有效时间
60
6.doget()和dopost()向servlet发送请求的区别
表单可以使用get和post请求,其余控件如超链接都是使用get请求。
post:
随同请求传参。
安全高,速度慢。
get:
随同url地址传参,只能发送字符串,最多1024字节。
安全差,速度快。
7.servlet的类和接口
ServletAPI包含于两个包中,即javax.servlet和javax.servlet.http。
Servlet是实现javax.servlet.Servlet接口的对象。
大多数Servlet通过从HttpServlet或GenericServlet类进行扩展来实现。
HttpServlet类:
实现Http协议的servlet,用于浏览器。
GenericServlet类:
实现与协议无关的servlet,用于AWT或Swing。
7.1javax.servlet包:
(1)Servlet接口:
[1]Servlet的生命周期相关方法
Servlet的生命周期:
①客户端发送请求到Servlet容器
②Servlet容器解析请求,即从本地文件系统、远程文件系统或者其他的网络服务中通过类加载器加载Servlet类
③创建Servlet实例
④调用Servlet接口的init()方法,初始化Servlet实例
⑤调用Servlet接口的service()方法,根据请求类型调用对应请求处理方法。
⑥输出响应信息
⑦返回响应
⑧调用Servlet接口的destroy()方法,销毁该servlet实例。
[2]获取Servlet相关信息
getServletConfig();//返回ServletConfig对象
(2)ServletConfig接口:
servlet配置对象
getServletConfig();//返回此servlet的ServletConfig对象。
servlet容器使用的servlet配置对象,该对象在初始化期间将信息传递给servlet。
①getInitParameter(Stringname);
//返回包含指定初始化参数的值,如果参数不存在,则返回null。
②getServletName();//返回此servlet实例的名称。
③getServletContext();//返回对调用者在其中执行操作的ServletContext的引用
(3)ServletContext接口:
ServletContext(服务器-公共空间)
[1]定义
服务器中存在的公共空间,所有浏览器都可以访问ServletContext的里的数据。
ServletContext中的属性的生命周期从创建开始,到服务器关闭而结束。
[2]应用实例
网站计数器
网站在线用户的显示
简单的聊天系统
[3]使用方法
getServletContext();//得到ServletContext();
①参数的设置、获取和移除
setAttribute(Stringname,objectobj);//向ServletContext中存放属性key-value。
getAttribute(Stringname);//获取属性的值(Object类型)。
getAttributeNames();//获取ServletContext中所有的属性名(Enumeration)。
removeAttribute(Stringname);//删除指定的属性。
getInitParameter("charset");//获取初始化参数
②获取服务器根目录相关信息
getContextPath();//获取本项目在服务器中的路径
getRealPath("/index.jsp");//获取指定文件在服务器中的绝对路径。
getMimeType("/a.txt");//获取指定文件的类型。
InputStreamin=context.getResourceAsStream("/a.txt");//获取根目录下文件的输入流
Setset=context.getResourcePaths("/A");//获取根目录下文件夹所有文件的路径
③资源控制
RequestDispatchergetRequestDispatcher(Stringpath);//url只能使用绝对路径
getResourceAsStream(Stringpath);//以InputStream对象的形式返回位于指定路径上的资源。
[4]配置ServletContext
charset
utf-8
(4)ServletRequest接口:
①参数的设置、获取和移除
setAttribute(Stringname,Objecto)
getAttribute(Stringname)
removeAttribute(Stringname);
getParameter(Stringname)
getParameterMap()//返回此请求的参数键值对。
getParameterNames()//返回包含所有参数名称(String对象类型)的Enumeration。
String[]getParameterValues(Stringname)
getAttribute()返回request范围内存在的对象,
getParameter()是获取http提交过来的数据(字符串)。
②设置请求中的信息
req.setCharacterEncoding();//重写此请求正文中使用的字符编码。
③资源控制
req.getRequestDispatcher(url).forward(request.response);
//将请求(forward(request.response))转发到getRequestDispatcher(url)方法中参数定义的页面或者链接。
url可以使用相对路径
(5)ServletResponse接口:
①设置响应中的信息
resp.setContentType("text/html;charset=UTF-8");
//指定HTTP响应的编码,同时指定了浏览器显示的编码。
resp.setCharacterEncoding()//设置HTTP响应的编码
②资源控制
PrintWriterout=resp.getWriter();//返回可将字符文本发送到客户端的PrintWriter对象
out.println("Hello!
大家好!
");
(6)Filter接口:
过滤器
[1]定义和作用
请求先传给过滤器,再传给servlet。
过滤器可以对web服务器中的所有web资源进行管理:
如,对Jsp,Servlet,静态图片文件或静态html文件等进行拦截
如,实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
[2]使用方法
①编写java类实现Filter接口,并实现其init()、doFilter()、destroy()方法。
②在doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)方法中可实现以下功能:
1.。
在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
2.。
访问权限控制
有权限访问:
chain.doFilter(request,response);
无权限访问则跳转:
HttpServletResponseresp=(HttpServletResponse)response;
resp.sendRedirect(“index.jsp”);
3.。
在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
[3]配置Filter
①注册Filter②映射Filter
url-pattern设置filter所拦截的请求路径:
/*:
过滤所有请求
/servlet/*:
过滤向/servlet目录下所有页面发送的请求,其他地方的请求无效不能访问。
*.jsp:
过滤向后缀名为jsp页面发送的请求,向向后缀名为其他的页面的请求不能访问。
*.do:
向servlet的映射加上后缀.do,然后在过滤器映射中过滤
例:
Servlet09
/servlet09.do
*.do
[4]Filter链
在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。
当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。
在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。
web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter.
(7)ServletContextListener接口:
监听器
(1)定义
监听器是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。
这里监听器能监听application(ServletContext)、session、request对象。
作用:
可设置本项目在服务器中的路径的初始变量。
(2)监听器类型
request:
ServletRequestListener和ServletRequestAttributeListener
session:
HttpSessionRequestListener和HttpSessionAttributeListener
servletContext:
servletContextListener和servletContextAttributeListener
前者监听对象的创建、添加和销毁;后者监听属性的设置和移除。
(3)使用方法
[1]创建监听类
publicclassMyListener01implementsServletContextListener{
@Override
publicvoidcontextInitialized(ServletContextEventarg0){
ServletContextcontext=arg0.getServletContext();
Stringpath=context.getContextPath();
context.setAttribute("path",path);
}
@Override
publicvoidcontextDestroyed(ServletContextEventarg0){}
}
publicclassMyListener02implementsServletContextAttributeListener{
@Override
publicvoidattributeAdded(ServletContextAttributeEventarg0){}
@Override
publicvoidattributeRemoved(ServletContextAttributeEventarg0){}
@Override
publicvoidattributeReplaced(ServletContextAttributeEventarg0){}
}
[2]在web.xml文件中注册监听器
listener.MyListener01
7.2javax.servlet.http包:
实现javax.servlet
(1)HttpSession接口:
session(服务器-浏览器空间)
HttpSession接口提供了存储和返回标准会话属性的方法。
标准会话属性如会话标识符、应用数据等,都以“名字-值”对的形式保存在服务器端。
[1]定义和作用
1.。
定义:
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。
这个空间就是Session空间,该空间中的数据默认呆滞时间为30分钟。
Session机制:
2.。
session应用:
①网上商城中的购物车。
②保存登录的用户信息。
③将某些数据放入到session中,供同一用户的各个页面使用。
④防止用户非法登录到某个页面。
3.。
Session机制
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识-称为sessionid,
如果已包含一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),
如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将被在本次响应中返回给客户端保存。
[2]使用方法
①得到session
HttpSessionhs=request.getSession(true);
②添加、获取和移除属性
hs.setAttribute(Stringname,Objectval);
Stringname=hs.getAttribute(Stirngname);
hs.removeAttribute(Stringname);
③设置和获取Session信息
session.setMaxInactiveInterval(36);//设置Session访问服务器端的呆滞时间为36秒
getMethod();//返回用于发出此请求的HTTP方法的名称,例如GET、POST或PUT
getRequestedSessionId()返回客户端指定的会话ID。
(2)HttpServletRequest接口
HttpSessiongetSession();//返回与这个请求关联的当前的有效的session。
StringgetMethod();//返回这个请求使用的HTTP方法