当前位置:文档之家› Javaweb开发中的servlet知识总结

Javaweb开发中的servlet知识总结

Java web开发中的servlet知识总结1. 请求(request)—响应(response)模式:用户在浏览器的地址栏中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求,服务器端程序接受这个请求,并对请求做出处理,然后发出一个回应,浏览器收到这个回应,并把回应的内容显示出来,这就是web应用程序的访问过程。

2. HTTP协议:浏览器单击链接是,会向服务器发送一段文本,告诉服务器请求的是那个网页,这段文本遵循HTTP协议格式,包含访问方式,HTTP协议版本,所用的浏览器,访问的地址等。

3. Servlet概述:Java web应用程序中所有的请求与响应都是通过servlet来完成的,servlet是java web的核心程序,所有的网址最终都要交给servlet来处理,servlet没有main之类的执行方法,当用户访问服务器是,服务器通过调用servlet的某些方法来处理整个过程。

4. Servlet的工作流程:浏览器提交的数据是遵循HttP协议的文本,这段文本由服务器接受并解析,封装成httpservletrequest类型的request对象,所有的http头数据都可以通过request的相应方法得到。

Tomcat同时把输出流圭寸装成HTTPServletresponse类型的response,通过设置response的相关属性就可以控制输出的内容,然后服务器将request 和response作为参数,调用servlet的相应方法比如doPost,doGet等。

5. Servlet的作用:主要处理业务逻辑,比如读取数据库,权限检查,业务处理等。

6. Servlet 接口:servlet 是一种实现了javax.servlet.Servlet 接口的类,servlet 规定了特定的方法来处理特定的请求,开发者只需要实现servlet的相应方法,用户访问web程序的时候,服务器会调用这些方法来完成业务处理。

7. 访问方式:servlet是建立在HTTP规范基础上的,HTTP1.1支持options , get, post, head ,put,delete,以及trace七种访问方式,各方式的意义分别是:Get表示查询信息,URL中可以附少量的参数信息,但是URL总长度不能超过255个字符,并且参数会显示在浏览器的地址栏。

Post表示提交信息,一般用于提交大数据信息或者文件,提交的内容不受长度限制,并且不会显示在浏览器的地址栏。

Options,put,delete,trace属于被声明了,但是没有被使用的web访问方式,现在的浏览器也很少用到这几种方式。

8. Java web目录结构:web程序部署在tomcat下的webapps下面,一个webapps下可以部署法和从服务器移除的方法,这些方法称为生命周期方法,它们是按以下顺序调用的:构造servlet,然后使用init()方法将其初始化处理来自客户端对service ()的全部调用从服务器中取出servlet,然后使用destory()方法将其销毁,最终进行垃圾回收并终止它。

10. servlet 的方法:(1)public void destory()(2)public void init(ServletConfig config ) throws ServletException(3)public void service(ServletRequest req,ServletResponse res)throwsServletExcepti on,j ava.i o.IO excepti on(4)public ServletConfig getServletConfig()(5)p ublic String getServletInfo() 11 .编写servlet:直接实现servlet接口来编写servlet很不方便,需要实现的方法太多,真正编写servlet时直接实现httpservlet,并覆盖相应的方法即可,一般只需要覆盖doGet()或doPost()方法。

在myeclipse中,可以之间新建一个servlet,且默认已经完成配置。

12. 请求和相应:客户端浏览器发出一个请求,服务器做出一系列操作后做出一个响应,发送给浏览器,完成一次web过程操作,web编程的过程就是分析客户需要什么信息或者做出什么操作,然后进行一系列的处理,然后通过相应结果显示给客户。

(1) 获取request的变量:客户端浏览器发出的请求被封装成一个httpservletrequest对象,所有的信息包括请求的方式,请求的参数,请求的地址,上传的文件,提交的数据,客户端Ip地址甚至客户端操作系统信息都包含在其中。

getContentLength()返回请求正文的长度(以字节为单位) 返,并使输入流可以使用它,如果长度未知,则回-,对于HTTP servlet,返回的值与CGI变量CONTENT_LENGTH勺值相同。

getContentType ()返回请求正文的MIME类型,如果该类型未知,则返回null。

对于HTTP servlet,返回的值与CGI变量CONTENT_TYP的值相同。

getLocalAddr ()返回接收请求的接口的In ternet Protocol (IP) 地址。

getLocalPort ()返回接收请求的接口的In ternet Protocol (IP) 端口号。

getLocale ()基于Accept-La nguage头,返回客户端将用来接受内容的首选Locale 如果客户端请求没有提供Accept-La nguage头,则此方法返回服务器的默认语言环境getRemotePort ()返回发送请求的客户端或最后一个代理的In ternet Protocol (IP) 源端口。

getMethod ()返回用于发出此请求的HTTP方法的名称,例如GET POST或PUT。

返回的值与CGI变量REQUEST_METH(的值相同。

getProtocol ()以protocol/majorVersion.minorVersion 的形式(例如HTTP/1.1 )返回请求使用的协议的名称和版本。

对于HTTPservlet,返回的值与CGI变量SERVER_PROTOC的值相同。

getQueryString ()返回包含在请求URL中路径后面的查询字符串。

如果URL没有查询字符串,则此方法返回null。

返回的值与CGI变量QUERY_STRING值相同。

getRequestDispatcher (String path)返回一个RequestDispatcher对象,它充当位于给定路径上的资源的包装器。

可以使用RequestDispatcher 对象将请求转发给资源,或者在响应中包含资源。

资源可以是动态的,也可以是静态的。

指定的路径名可以是相对的,尽管它无法扩展到当前servlet 上下文之夕卜。

如果该路径以"/"开头,那么可以相对于当前上下文根解释它。

如果servlet 容器无法返回RequestDispatcher,则此方法将返回null 。

getScheme()返回用于发出此请求的方案的名称,例如http、https或ftp。

不同方案具有不同的构造URL的规则,这一点已在RFC 1738中注明。

(2)获取相应的变量:addCookie( Cookie cookie)将指定cookie添加到响应。

可多次调用此方法设置一个以上的cookie。

addDateHeader(Stri ng n ame, l ong date)用给定名称和日期值添加响应头。

该日期根据距历元时间的毫秒数指定。

此方法允许响应头有多个值en codeRedirectURL (Stri ng url)对指定URL进行编码,以便在sendRedirect 方法中使用它,如果不需要编码,则返回未更改的URL此方法的实现包含可以确定会话ID是否需要在URL中编码的逻辑。

因为进行此确定的规则可能不同于用来确定是否对普通链接进行编码的规则,所以此方法与en codeURL方法是分开的。

encodeURLString url)通过将会话ID包含在指定URL中对该URL进行编码,如果不需要编码,则返回未更改的URL此方法的实现包含可以确定会话ID是否需要在URL 中编码的逻辑。

例如,如果浏览器支持cookie,或者关闭了会话跟踪,则URL编码就不是必需的。

sendError (int sc, String msg) throws java.io.IOException使用指定状态将错误响应发送到客户端。

默认情况下,服务器将创建类似HTML格式的服务器错误页面的响应,该页面包含指定消息,内容类型设置为"text/html",并且保持cookie和其他头不变。

如果已经对Web应用程序进行了对应于传入状态代码的错误页面声明,则将优先处理建议的msg参数。

sendRedirect (String location) throws java.io.IOException使用指定重定向位置URL将临时重定向响应发送到客户端。

此方法可以接受相对URL; servlet容器必须在将响应发送到客户端之前将相对URL 转换为绝对URL。

如果位置是相对的,没有前导'/',则容器将相对于当前请求URI对其进行解释。

如果位置是相对的,有一个前导'/',则容器将相对于servlet 容器根对其进行解释。

如果已经提交了响应,则此方法抛出lllegalStateExceptio n 。

使用此方法后,响应应该被视为已经被提交,不能再写入。

setHeader (String name, String value)用给定名称和值设置响应头。

如果已经设置了头,则新值将重写以前的值。

con tai nsHeader方法可用于测试在设置其值之前头是否存在。

setstatus (int sc)设置此响应的状态代码。

此方法用于设置没有错误时的返回状态代码(例如状态代码SC_OK或SC_MOVED_TEMPORARIL如果有错误,并且调用者希望调用Web应用程序中定义的错误页面,则应改用sendError方法。

容器清除缓冲区,设置Location 头,并保留cookie和其他头setCharacterE ncod ing (Stri ng charset)设置将发送到客户端的响应的字符编码(MIME charset),例如,将它设置为UTF-8。

如果已通过#setContentType或#setLocale设置了字符编码,则此方法将重写该字符编码。

相关主题