servlet 学习笔记.docx

上传人:b****6 文档编号:8847457 上传时间:2023-02-02 格式:DOCX 页数:22 大小:1.12MB
下载 相关 举报
servlet 学习笔记.docx_第1页
第1页 / 共22页
servlet 学习笔记.docx_第2页
第2页 / 共22页
servlet 学习笔记.docx_第3页
第3页 / 共22页
servlet 学习笔记.docx_第4页
第4页 / 共22页
servlet 学习笔记.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

servlet 学习笔记.docx

《servlet 学习笔记.docx》由会员分享,可在线阅读,更多相关《servlet 学习笔记.docx(22页珍藏版)》请在冰豆网上搜索。

servlet 学习笔记.docx

servlet学习笔记

Serverlet学习笔记

1.servlet相关概念

J2EE体系:

表示层、业务逻辑层、数据层

●什么是servlet?

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。

它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

●Servlet的作用

Ø读取请求的显式数据、隐式数据

Ø生成相应的结果

Ø发送显式数据(HTML)和隐式数据(状态代码和报头)发送到客户端

●Servlet容器(servlet引擎)

Servlet不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。

●Servlet的体系结构

Ø在J2EE中跟Servlet相关的一个包是javax.servlet,其中最基本的Servlet被声明为一个接口javax.servlet.Servlet,这是Servlet最高层次的一个抽象

Ø在javax.servlet中,实现了一个类javax.servlet.GenericServlet,这个类实现了Servlet接口

Ø而这个类是构建其他和协议相关的Servlet子类型的通用的父类(如HttpServlet)

2.servlet开发、部署、运行

●开发(继承HttpServlet类、重写HttpServlet类的方法doGet)

publicclassHelloWorldServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsIOException{

response.setContentType("text/html");----设置响应的格式

PrintWriterout=response.getWriter();----获取输出流

out.println("");

out.println("");

out.println("HelloWorld");

out.println("");

out.println("");

out.println("Hello,World");

out.println("");

out.println("");

out.close();----关闭输出流

}

}

●部署(在web.xml进行注册)

xmlversion="1.0"encoding="UTF-8"?

>

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");

out.println("");

for(inti=0;i

out.println(cookies[i].getName()+"=");

out.println(cookies[i].getValue());

//如果值为中文,解码

//out.println(.URLDecoder.decode(cookies[i].getValue(),”GBK”);

out.println("
");

}

out.println("");

out.println("");

out.flush();

out.close();

}

———————————————————————————————————————

16.过滤器

●过滤器的概念

Servlet过滤器是实现了javax.servlet.Filter接口的服务器端程序。

主要用来完成一些通用的操作。

比如编码的过滤,判断用户的登陆状态等一些业务逻辑判断等等。

●过滤器的原理

在web.xml文件配置好要拦截客户的请求,此时可以对其进行(request、response)统一编码,同时可以进行逻辑判断,如用户是否已经登录、有没有权限访问该页面。

Web应用程序只初始化一次,之后就可以进行拦截。

●过滤链

EncodingFilter负责设置编码,SecurityFilter负责控制权限。

●过滤器接口构成

所有的过滤器类都必须实现javax.servlet.Filter接口。

这个接口含有所有过滤器必须实现的方法:

Øinit(FilterConfig)

ØdoFilter(ServletRequest,ServletResponse,FilterChain)

Ødestroy()

●Servlet过滤器创建步骤:

a)实现javax.servlet.Filter接口类

b)实现init()方法,

c)实现doFilter()方法,实现过滤器响应

d)调用FilerChain接口对象的doFilter方法,向后续的过滤器传递请求响应

e)在web.xml中配置Filter

断点的使用:

F6继续运行F8做响应

配置初始化编码值

注意:

创建过滤器时要实现接口javax.servlet.Filter

 

--------------------------------------------------------------------------------------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1