博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet技术
阅读量:5011 次
发布时间:2019-06-12

本文共 2543 字,大约阅读时间需要 8 分钟。

JSP的作用

    为了简化起见,某种程度上,可以将servlet看做是含有HTML的Java程序;将JSP看作是含有Java代码的HTML页面。

    JSP文档只不是编写servlet的另一种方式。JSP页面会被翻译成servlet,servlet会被编译,在请求期间运行的就是servlet。

    对于面向处理(processing)的任务,servlet是最佳选择,而对于面向表示(presentation)的任务,JSP是最佳选择。

生成HTML的servlet

    HTTP响应由状态行、一个或多个报头、一个空行和实际的文档以此次序构成。报头的出现次序并不重要,servlet会缓冲报头数据,将他们一次发送到客户端,因此,即使在设定报头之后,仍旧可以设置状态代码(属于返回内容的第一行)。但是,servlet不是一定要缓冲文档本身,因为对于篇幅较长的页面,用户或许只希望看到部分结果。servlet引擎可以缓冲部分输出,但并未规定缓冲区的大小。可以使用HttpServletResponse的getBufferSize方法去顶这个大小,或使用setBufferSize指定这个大小。也可以在缓冲区天慢慢,要发往客户时,对报头进行设置。如果不确定是否已经发送出去,也可以使用isCommitted方法来检查。即使如此,最佳方案还是将setContentType行放在任何使用PrintWriter的行之前。

servlet的生命周期

    服务器只创建每个servlet的单一实例,每个用户请求都会引发新的线程——将用户请求交付给相应的doGet或doPost进行处理。

    get请求表示要从服务器获取数据;post请求表示向服务器传递数据。

  Init方法

    默认情况下,servlet对象是在第一次被请求的时候创建的,之后就驻留在web服务器管理的内存中。首次创建时,它的init方法会得到调用,因此,init是放置一次性设置代码的地方。servlet一般在用户首次调用对应的servlet的URL时创建init方法,但也可以指定servlet在服务器启动后载入。

  Service方法

    在这之后,针对每个用户请求,都会创建一个线程,该线程调用前面创建的实例的service方法。之后,由service方法依据收到的Http请求的类型,调用doGet,doPost或其他doXXX方法。如果需要在servlet中等同地处理post和get请求,应该让doPost调用doGet即可,而不是覆盖service方法。首先,之后还可以加入doPut,doTrace等,支持其他HTTP请求方法。其次,还可以通过添加getLastModified方法,加入对修改日期的支持,由于getLastModified方法由默认的service方法调用所以覆盖service方法也就失去了这个选项。最后,service提供对HEAD、OPTION和TRACE请求的自动支持。

  Destroy方法

    服务器可能会因为管理员要求或者服务器长时间空闲决定移除之前载入的servlet实例。在服务器移除servlet的实例之前,它会调用servlet的destroy方法,从而使得servlet有机会关闭数据库连接,停止后台运行的线程、将cookie列表的点击计数写入到磁盘,并执行其他清理活动。要意识到Web服务器有可能崩溃,所以不要讲destroy机制作为向磁盘上保存状态的唯一机制。

  ServletConfig对象

    与Servlet对象一一对应,封装Servlet的初始化信息

    在doPost/doGet方法中获取ServletConfig对象:this.getServletConfig()

    <servlet>

        <servlet-name>sdaasdada</servlet-name>

        <servlet-class>ghjhgjhghg</servlet-class>

        <init-param>

             <param-name>username</param-name>

             <param-name>password</param-name>

             <param-value>123</para-value>getInitParamter("username");

        </init-param>

    </servlet>

    获取初始化参数:this.getServletConfig().

Servlet的映射方式

    Servlet的请求路径是虚拟的,与项目路径无关

        扩展映射:*.do

        路径映射:/test/*

        http://localhost:8080/n01/test.do   会调用下面的路径(路径映射优先)

在servlet中获取表单数据

    单个值的读取:调用HttpServletRequest的getParameter方法,提供大小写敏感的参数名作为方法的参数。

    多个值的读取:调用getParameterValues方法返回字符串数组。

    参数名的查找:调用getParameterNames以Enumeration的形式返回这种列表,其中每一项都可以转换成String,并可以用在getParameter或getParameterValues调用中。若当前请求中没有参数,getParameterNames返回空的Enumeration(不是null)。(Enumeration只是一个接口,确保实际的类实现了hasMoreElements和nextElement方法)它不会去报具体的实现采用何种次序。getParameterMap可以替代此方法。

请求转发、重定向、包含

    参照

 

转载于:https://www.cnblogs.com/m-evan/p/4280098.html

你可能感兴趣的文章
[Angular 2] Using Promise to Http
查看>>
[Grunt] grunt.template
查看>>
一、基础篇--1.1Java基础-Object类中常见的方法,为什么wait notify会放在Object里边...
查看>>
UVa 10079 - Pizza Cutting
查看>>
Ubuntu最小化桌面快捷键Super+D不生效解决
查看>>
Cookie&Session会话跟踪技术
查看>>
UNIX环境高级编程 第17章 高级进程间通信
查看>>
ES的Zen发现机制
查看>>
【hibernate】1、Hibernate的一个注解 @Transient
查看>>
flex入门----基础知识
查看>>
HihoCoder 1877 - Approximate Matching
查看>>
【转】C++多继承的细节
查看>>
物联网实验日志-2016-6-8
查看>>
高德地图、腾讯地图、谷歌中国区地图与百度地图坐标系
查看>>
Elastic Search 语法总结
查看>>
py自动化之环境配置
查看>>
Winodws SNMP服务安装和配置(Windows 2003 & 2008 R2)
查看>>
红黑树-想说爱你不容易
查看>>
Git操作指南
查看>>
Loadrunner安装详解
查看>>