xmlns="
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
ServletTest01
com.jy.ServletTest01
ServletTest01
/servlet/ServletTest01----浏览器URL输入的地址
index.jsp
●运行
在浏览器中输入http:
//localhost:
端口号/工程名/url-pattern
3.servlet的生命周期
4.servlet生命周期涉及的方法
●Servlet服务器(容器)负责管理Servlet的生命周期
●三个阶段涉及的方法
Init()
service()[doPost(),doGet()]
destroy()
●init()方法
服务器构造Servlet实例后调用
执行Servlet初始化–创建或加载Servlet在处理请求时使用的对象
可以覆盖init()方法,添加其他初始化内容
●service()方法
service()方法一般不去覆盖它;service()方法用于分析用户的请求,根据用户的请求类型;调用不同的处理方法;如:
doPost(),doGet()等
通常我们重写的是doPost()或doGet方法
●destroy()方法
卸载Servlet时,调用destroy()方法
释放获得的资源
服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用destroy()方法
●其他方法
ØgetServletConfig()获取Servlet配置对象
ØgetServletContext()获取Servlet上下文即Servlet环境
ØgetServletInfo()获取Servlet描述信息
5.ServletConfig对象
getServletName()该方法返回一个servlet实例的名称,该名称由服务器管理员提供。
getServletContext()返回一个ServletContext对象的引用。
getInitParameter()返回一个由参数Stringname决定的初始化变量的值.
getInitParameterNames()返回一个存储所有初始化变量的枚举函数。
6.读取servlet的配置参数
7.请求处理
●Get和Post请求
HTTP只有POST和GET两种命令模式
Get方式提交数据是在浏览器中输入参数,例如:
http:
//localhost:
端口号/工程名/Project/Servletname?
username=admin
(类似表单),通过request.getparameter(“username”);
Ø表单以POST方式提交,即POST请求;servlet调用doPost()处理;
调用doPost()时系统会传入两个参数,
HttpServletRequest对象封装请求中数据(HTTP头部)及客户端信息(如:
客户机的IP地址等)
HttpServletResponse客户端响应(如输出显示数据)
Ø表单以GET方式提交,即GET请求;处理方式方法和doPost完全相同;
8.中文乱码问题
出现乱码的情况有两种情况:
提交给服务器时有乱码、服务器响应给客户端时有乱码
解决乱码的问题:
Ø提交表单时有中文
✓Get提交
Tomcat-conf-server.xml设置URIEncoding="GBK”
✓Post提交
获取数据前设置request编码:
request.setCharacterEncoding(“GBK”);或者
或对获取到的数据转编码:
newString(suser.getBytes(“ISO-8859-1”),”GBK”);
Ø响应至客户端时有中文
response.setCharacterEncoding(“GBK");或者
response.setContentType("text/html;charset=GBK");
9.Request/response对象使用
●Request
Request对象用于接收客户端浏览器提交的数据。
获取post请求提交的数据方法:
ØStringrequest.getParameter(“表单元素名”);//获取用户在表单输入的数据(如:
用户名,密码等);
ØString[]request.getParameterValues(“表单元素名”);
request.getScheme();
●Response
Response对象的功能则是将服务器端的数据发送到客户端浏览器.
Responsed的相关方法:
setContentType(arg0)
是设置JSP页面的显示方式,如’text/html’,
‘text/html;charset=gb2312’等
setCharacterEncoding(arg0)
设置页面的编码方式:
比如gb2312,gbk,big5,还有UTF-8等
addCookie(Cookie)
往客户端添加一个Cookie
sendRedirect(String)
重定向请求
response.setHeader(name,contect);
设置html头head。
10.servletContext对象使用(HttpServlet.servletContext())
ServletContext,从Servlet的角度来看,可以理解为它所属Web应用程序,ServletContext是一个接口,Servlet容器的提供商必须要实现这个接口.
在web.xml文件中设置全局参数的初始值,如下:
----上下文参数
page----参数名
10----参数值
在ServletContext接口中,有两个方法可以用来获得初始化参数(初始化参数存放在web.xml中):
•getInitParameter
•getInitParameterNames返回一个存储所有初始化变量的枚举函数。
ServletContextcontext=this.servletContext()
?
?
?
?
?
?
?
?
?
?
?
?
在ServletContext中,设置和管理ServletContext的属性:
•setAttribute
•getAttribute
•getAttributeNames
•removeAttribute
context为ServletContext
context.setAttribute("username","admin");
System.out.println(context.getAttribute("username"));
该Attribute属性存在是位置?
11.servletConfig对象使用
一个由servlet容器使用的servlet配置对象,用于在servlet初始化时向它传递信息。
在web.xml文件中设置ServletConfig初始化参数,如下:
ServletTest01
com.jy.ServletTest01
----设置初始化参数
pagesize---参数名称
100----参数值
getServletName()
返回一个servlet实例的名称,该名称由服务器管理员提供。
getServletContext()
返回一个ServletContext对象的引用。
getInitParameter()
返回一个由参数Stringname决定的初始化变量的值
getInitParameterNames()
返回一个存储所有初始化变量的枚举函数。
特别注意getInitParameterNames()用法:
Enumerationnames=servletConfig.getInitParameterNames()
while(names.hasMoreElements()){
Stringname=names.nextElement();
System.out.println("参数名="+name);
System.out.println("参数值="+servletConfig.getInitParameter(name));
}
12.Servlet相关类
13.WEB组件间的相连关系(重定向、请求转发、包含)
组件有两种:
JSP和servlet
●重定向
HttpServletResponse:
sendRedirect(Stringurl);
1.htmlaction=”url-pattern”-----RedirectServlet.javarespone.sendredirect(URL)----URL
注意重定向时候URL的格式:
response.sendRedirect(request.getContextPath()+"/index.jsp");
●请求转发
RequestDispatcher:
forword(HttpServletRequest,HttpServletResponse);
1.html-RequestDispatch_01.java(转发)-RequestDispatch_02.java(处理)
注意:
获取转发器的方法request.getRequestDispatch(“转发到其他组件的路径”)
路径的格式如下
●包含
包含是指一个web组件将另一个web组件的结果插入到包含语句处;实现组件内容合并。
两个web组件间共享request。
RequestDispatcher:
include(HttpServletRequest,HttpServletResponse);
●重定向和请求转发的比对
14.三大作用域
●Request
(HttpServletRequest)客服端发送一个请求到服务端时产生,服务端处理完这个请求时结束。
相关的方法:
publicvoidsetAttribute(Stringvar,Objectobj);
var作用域变量名;obj作用域变量对应的值;
publicObjectgetAttribute(Stringvar);
var作用域变量名;
PublicvoidremoveAttribute(Stringvar);
var作用域变量名;
●Session
(HttpSession)session产生后在session的有效期内有效,每个客服端独享自己一个session对象。
Session相关方法:
get/set/removeAttribute()//操作属性的方法
getCreateTime()//毫秒,以1970-01-01为起点获取Session创建时间;
getLastAccessedTime();//(单位:
毫秒)获取最后一次访问的时间;
setMaxInactiveInterval(-1);//(单位:
秒)设置超时时间;
getMaxInactiveInterval();//(单位:
秒)获取超时时间;
isNew();//判断是否是新创建的;
invalidate();//注销Session让Session对象与用户断开;
getServletContext();//获取上下文对象;
●Application
v(ServletContext)application用来存储和获取当前应用内的变量;对所有客服端共享;web应用加载时启动时候产生web应用关闭时消亡。
Servlet容器环境信息构成了一个ServletContext。
Application相关方法:
Set/get/removeAttribute();//操作作用域的变量;
getRequestDispatcher(String)//获取转发器;
getRealPath(String)//获取绝对路径;
Ø获得request:
直接就request.set();
Ø获得session:
HttpSessionsession=request.getSession();
Ø获得application:
ServletContextservletContext=this.getServletContext();
15.Cookie的应用
●Cookie的概念及用途
概念Cookie是驻留在客户端的一个文本文件;
用途:
在客户端保留客户信息。
●Cookie的相关操作
通过HttpServletRequest对象获取客户端的Cookie信息:
getCookies()
通过HttpServletResponse对象往客户端添加Cookie信息:
addCookie(Cookie)
Cookie类相关方法:
Øset/getName()
Øset/getValue()
Øset/getMaxAge()失效时间
Øset/getPath()适用的路径
Øset/getDomain()适用的域名
———————————————————————————————————————
●写入cookie(早servlet中进行操作)
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Cookiecookie1=newCookie("login_name","admin");
cookie1.setMaxAge(60*60*24*360);//设置cookie的超时时间
usernamecookie.setPath("/");///设置该工程底下都可以访问到该cookie
Cookiecookie2=newCookie("login_pwd","123456");
cookie2.setMaxAge(60*60*24*360);
Cookiecookie3=newCookie(“login_sex”,.URLEncoder.encode(“男”,“gb2312”));//中文要转编码.
cookie3.setMaxAge(60*60*24*360);
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);
}
●读取cookie
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Cookie[]cookies=request.getCookies();
response.setContentType("text/html");
PrintWriterout=response.getWriter();
out.println("");
out.println("
getcookies");