关于servlet和jsp的学习总结三(详细)
来源:互联网 发布:淘宝卡西欧专卖店 编辑:程序博客网 时间:2024/05/22 01:33
再看下面文字时,首先我们要将上面的图搞清楚,这样在编码的时候就会根据不同的需求去继承不同的类了
Servlet API的核心是javax.servlet.Servlet接口,所有的servlet类都必须继承这一接口,在Servlet接口中定义了5个方法,其中3个方法都有servlet容器来调用,容器会在servlet的生命周期的不同阶段来调用不同的方法。
@init(ServletConfigconfig)方法:负责初始化servlet对象。容器在创建好之后就开始调用这个方法。
@service(ServletRequestreq,ServletResponse res)方法:负责响应客户的请求。当容器收到来自客户端的消息之后,就会调用servic方法然后根据http协议中的get方法or post方法然后在servlet中用相应的doGet()和doPost方法来进行处理。
@destroy()方法:负责释放servlet对象占有的资源,当servlet对象结束生命周期的时候就会调用此方法。
当我们的servlet继承了GenericServlet类之后,就会自动复写父类的 @Override
public voidservice(ServletRequest req, ServletResponse res)
throwsServletException, IOException {
}方法。
此时将详细讲解ServletRequest 接口:
在上述的方法里有一个ServletRequest类型的参数。ServletRequest类表示来自客户端的请求,当servlet容器接收到客户端要访问特定的servlet请求之后,容器先解析客户端的原始数据,把它包装成一个ServletRequest对象。当容器调用servlet对象的service方法时,就可以把ServletRequest作为参数传递给service()方法
ServletRequest接口提供了一系列读取客户端的请求数据的方法
@getContentLength():返回请求正文的长度,如果请求正文长度未知,则返回-1;
@getContentType():获得请求正文的MIME类型,如果请求正文的类型未知,则返回null
@getInputStream():用于读取请求正文的输入流
@getLocalAddr():返回服务器端的IP地址
@getLocalName():返回服务器端的主机名
@getLocalPort():返回服务器端的ftp端口号
@getParameter(String name):根据给定的参数名,返回请求中德匹配请求参数值
@getProtocol():返回客户端和服务器端通信所用的协议名称及版本号
@getReader():返回用于读取字符串形式的请求正文的BufferReader对象。
@getRemoteAddr():返回客户端的ip地址
@getRemoteHost():返回客户端的主机名
@getRemotePort():返回客户端的ftp端口号
此外在ServletRequest接口中还定义了一组用于在请求范围内存取共享数据的方法
@setAttribute(String name,Object object):在请求范围之内保存一个属性值,参数name表示属性名,参数object表示属性值
@getAttribute(String name):根据name参数给定的属性名,返回请求范围内匹配的属性值
@removeAttribute(String name):从请求范围内删除一个属性值
此时将详细讲解ServletResponse接口:
在ServletResponse接口中定义了一系列与生成响应结果相关的方法
@setCharacterEnocoding(String charset)设置响应正文的字符编码,默认是iso-8859-1
@setContentLength(int len)设置响应正文的长度
@setContentType(String type):设置响应正文的MIME的类型
@getCharacterEncoding():返回响应正文的字符编码
@getContentType()返回响应正文的的MIME类型
@setBufferSize(int size):设置用于存放响应正文数据的缓冲区的大小
@getBufferSize ():获得用于存放响应正文数据的缓冲区的大小
@reset():清空缓冲区的正文数据,并且清空响应状态代码及响应头
@resetBuffer():仅仅清空缓冲区正文数据,不清空响应状态代码及响应头
@flushBuffer():强制性地把缓冲区数据的响应正文数据发送到客户端
@isCommited():返回一个boolean,true代表缓冲数据以提交给客户端,false相反
@getOutputStream():返回一个ServletOutputStream对象用它来输出二进制数据
@getWriter():返回一个PrintWriter对象,servlet用它来输出字符串形式的数据
当继承HttpServlet后会复写父类的以下方法
public class Setvlert extendsHttpServlet {
publicSetvlert() {
super();
}
public voiddestroy() {
super.destroy();// Just puts "destroy"string in log
}
public voiddoGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
response.setContentType("text/html");
PrintWriter out =response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML4.01 Transitional//EN\">");
}
public voiddoPost(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
response.setContentType("text/html");
PrintWriter out =response.getWriter();
}
public void init()throws ServletException {
}
}
HttpServletRequest接口是ServletRequest接口的子接口。HttpServletRequest接口提供了用于读取Http请求中的相关信息
@getScheme()方法返回请求的计划,比如http,https或者ftp.
@getServerName()方法返回被发送请求的服务器的主机名
@getServerPort()方法返回被发送请求的端口号。
@getContextPath()返回请求地址的根目录,以"/"开关,但不是以"/"结尾。
一个常用的获得服务器地址的连接字符串是:
String path = request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
@getCookies() 取得cookie
@getMethod() 取得请求方法,如get,post或put
@getRequestURL() 取得请求URL(统一资源定位符)
@getRequestURI() 取得请求URI(统一资源标识符)
@getSession() 取得对应session
@getHeaderNames()返回请求包含的所有头名称的一个enumeration(遍历器)
HttpServletReponse接口提供了用于设置Http请求中的相关信息
@从Servlet中可以通过getWriter方法取得PrintWriter对象,来输出字符数据。从Servlet中可以通过getOutputStream方法取得ServletoutputStream对象。ServletOutputStream既可以输出字符数据,也可以输出MIME格式的二进制数据。如果getWriter方法已经被使用过,当使用getOutputStream时,会有java.lang.IllegalStateException例外抛出。@setContentType方法:在响应中可以表明内容格式和长短。
@setBufferSize方法:设置Web容器的缓冲器大小; getBufferSize方法返回Web容器的缓冲器大小; resetBuffer方法清空并重置缓冲器,使用reset方法清空缓冲器、状态头信息,使用flushBuffer方法将缓冲器内的所有输出内容向客户传递。使用isCommitted方法判断是否响应已经被履行。“履行”的定义是指状态码冬耕 信息已经被写入响应。
@setLocal方法设定响应的地域信息,主要在Web程序的国际货币国际化时使用。这个方法应该在getWriter之前被使用。默认的Web服务器的地域信息。
HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。
@setStatus方法用来设置Servlet向客户端返回的状态码,它用来设置没有出错的状态。如果Servlet运行出错,Servlet可以使用sendError方法设置状态码,如sendError(int sc)方法设置错误状态代码。sendError(int sc,String msg)方法除了设置状态码,还向客户发出一条错误信息。
@setHeader可以指定特定名称的头信息的值,addDateheader,addIntHeader,setDateHeader,setIntHeader可以加入或理性特定时间或整数型头信息。
@addCookie方法可以在Web服务器响应中加入Cookie对象,这个对象将被浏览器所保存。Cookie机制也被用来维护会话状态。
@sendRedirect方法向客户发出临时重新导向的响应。它生成的响应状态码为302。该响应给了客户一个新的URL风趣。如果缓冲器已经被清空,这个方法会弹出一个IllegalStateException例外。
- 关于servlet和jsp的学习总结三(详细)
- 关于servlet和jsp的学习总结一(详细)
- 关于servlet和jsp的学习总结二(详细)
- 关于cookie目录的总结(JSP和Servlet版本)
- javaweb学习(4):MVC模式和servlet/JSP以及Filter的详细介绍与使用
- Servlet/JSP学习总结
- JSP/servlet学习总结
- Servlet、JSP学习总结
- jsp+servlet学习(三)监听器实例
- JSP学习笔记之三——关于servlet配置web.xml出现的问题
- Servlet&JSP (三)上传和下载
- 关于java servlet和jsp的区别
- 关于Servlet和JSP技术的概述
- 关于jsp和servlet的区别
- 关于jsp servlet和jfinal的基础知识
- servlet和jsp的乱码问题总结
- servlet学习总结三
- JSP/Servlet 学习笔记(三)
- CreateTimerQueueTimer-待续
- AJAX
- 虽然把程序分成很多函数很直观...但..有时候会占很多时间。。。
- Hibernate写配置文件无提示信息解决
- contentprovider使用方法
- 关于servlet和jsp的学习总结三(详细)
- Java传值和传引用
- 【DP】ural 1017
- 术语
- C语言问题——int argc,char *argv[]的解析
- 编程是什么,什么是编程?
- 一步一步创建VC2005解决方案
- CTreeCtrl的使用和一个CTreeCtrl的派生类
- Google'sPageRank Explained andhow to make the most of it