Java web 开发中的servlet知识总结
- 格式:docx
- 大小:26.22 KB
- 文档页数:6
Java web 开发中的servlet知识总结1.请求(request)—响应(response)模式:用户在浏览器的地址栏中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求,服务器端程序接受这个请求,并对请求做出处理,然后发出一个回应,浏览器收到这个回应,并把回应的内容显示出来,这就是web应用程序的访问过程。
2.HTTP协议:浏览器单击链接是,会向服务器发送一段文本,告诉服务器请求的是那个网页,这段文本遵循HTTP协议格式,包含访问方式,HTTP协议版本,所用的浏览器,访问的地址等。
3.Servlet概述:Javaweb应用程序中所有的请求与响应都是通过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下可以部署多个web项目,根据servlet规范,web程序自己有特定的结构,部署时必须安装9.法和从服务器移除的方法,这些方法称为生命周期方法,它们是按以下顺序调用的:●构造servlet,然后使用init()方法将其初始化●处理来自客户端对service()的全部调用●从服务器中取出servlet,然后使用destory()方法将其销毁,最终进行垃圾回收并终止它。
10.servlet的方法:(1)publicvoid destory()(2)publicvoidinit(ServletConfigconfig)throwsServletException(3)publicvoidservice(ServletRequest req,ServletResponse res)throwsServletException,java.io.IOexception(4)publicServletConfig getServletConfig()(5)publicString getServletInfo()11.编写servlet:直接实现servlet接口来编写servlet很不方便,需要实现的方法太多,真正编写servlet时直接实现httpservlet,并覆盖相应的方法即可,一般只需要覆盖doGet()或doPost()方法。
在myeclipse中,可以之间新建一个servlet,且默认已经完成配置。
12.请求和相应:客户端浏览器发出一个请求,服务器做出一系列操作后做出一个响应,发送给浏览器,完成一次web过程操作,web编程的过程就是分析客户需要什么信息或者做出什么操作,然后进行一系列的处理,然后通过相应结果显示给客户。
(1)获取request的变量:客户端浏览器发出的请求被封装成一个httpservletrequest对象,所有的信息包括请求的方式,请求的参数,请求的地址,上传的文件,提交的数据,客户端Ip地址甚至客户端操作系统信息都包含在其中。
●getContentLength()返回请求正文的长度(以字节为单位),并使输入流可以使用它,如果长度未知,则返回–1,对于 HTTP servlet,返回的值与 CGI 变量 CONTENT_LENGTH 的值相同。
●getContentType()返回请求正文的 MIME 类型,如果该类型未知,则返回 null。
对于 HTTP servlet,返回的值与 CGI 变量 CONTENT_TYPE 的值相同。
●getLocalAddr()返回接收请求的接口的 Internet Protocol (IP) 地址。
●getLocalPort()返回接收请求的接口的 Internet Protocol (IP) 端口号。
●getLocale()基于 Accept-Language 头,返回客户端将用来接受内容的首选 Locale。
如果客户端请求没有提供 Accept-Language 头,则此方法返回服务器的默认语言环境●getRemotePort()返回发送请求的客户端或最后一个代理的 Internet Protocol (IP) 源端口。
●getMethod()返回用于发出此请求的 HTTP 方法的名称,例如 GET、POST 或 PUT。
返回的值与 CGI 变量 REQUEST_METHOD 的值相同。
●getProtocol()以protocol/majorVersion.minorVersion的形式(例如 HTTP/1.1)返回请求使用的协议的名称和版本。
对于HTTP servlet,返回的值与CGI 变量 SERVER_PROTOCOL 的值相同。
●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(String name, long date)用给定名称和日期值添加响应头。
该日期根据距历元时间的毫秒数指定。
此方法允许响应头有多个值●encodeRedirectURL(String url)对指定 URL 进行编码,以便在 sendRedirect 方法中使用它,如果不需要编码,则返回未更改的URL。
此方法的实现包含可以确定会话ID 是否需要在 URL 中编码的逻辑。
因为进行此确定的规则可能不同于用来确定是否对普通链接进行编码的规则,所以此方法与 encodeURL 方法是分开的。
●encodeURL(String 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 容器根对其进行解释。
如果已经提交了响应,则此方法抛出IllegalStateException。
使用此方法后,响应应该被视为已经被提交,不能再写入。
●setHeader(String name, String value)用给定名称和值设置响应头。
如果已经设置了头,则新值将重写以前的值。
containsHeader 方法可用于测试在设置其值之前头是否存在。
●setStatus(int sc)设置此响应的状态代码。
此方法用于设置没有错误时的返回状态代码(例如状态代码SC_OK 或SC_MOVED_TEMPORARILY)。
如果有错误,并且调用者希望调用Web 应用程序中定义的错误页面,则应改用sendError 方法。
容器清除缓冲区,设置 Location 头,并保留 cookie 和其他头●setCharacterEncoding(String charset)设置将发送到客户端的响应的字符编码 (MIME charset),例如,将它设置为 UTF-8。