《Servlet、JSP和Spring MVC初学指南》——1.2 Servlet
本节书摘来自异步社区《Servlet、JSP和Spring MVC初学指南》一书中的第1章,第1.2节,作者:【加】Budi Kurniawan(克尼亚万) , 【美】Paul Deck著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.2 ServletServlet接口中定义了以下5个方法:
void init(ServletConfig config) throws ServletException void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException void destroy() java.lang.String getServletInfo() ServletConfig getServletConfig()
注意,编写Java方法签名的惯例是,对于与包含该方法的类型不处于同一个包中的类型,要使用全类名。正因为如此,在Service方法javax.servlet.ServletException的签名中(与Servlet位于同一个包中)是没有包信息的,而java.io.Exception则是编写完整的名称。
init、Service和destroy是生命周期方法。Servlet容器根据以下规则调用这3个方法:
init,当该Servlet第一次被请求时,Servlet容器会调用这个方法。这个方法在后续请求中不会再被调用。我们可以利用这个方法执行相应初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig。一般来说,你会将ServletConfig赋给一个类级变量,因此这个对象可以通过Servlet类的其他点来使用。
Service,每当请求Servlet时,Servlet容器就会调用这个方法。编写代码时,是假设Servlet要在这里被请求。第一次请求Servlet时,Servlet容器调用init方法和Service方法。后续的请求将只调用Service方法。
destroy,当要销毁Servlet时,Servlet容器就会调用这个方法。当要卸载应用程序,或者当要关闭Servlet容器时,就会发生这种情况。一般会在这个方法中编写清除代码。
Servlet中的另外两个方法是非生命周期方法,即getServletInfo和getServletConfig:
getServletInfo,这个方法会返回Servlet的描述。你可以返回有用或为null的任意字符串。
getServletConfig,这个方法会返回由Servlet容器传给init方法的ServletConfig。但是,为了让getServletConfig返回一个非null值,必须将传给init方法的ServletConfig赋给一个类级变量。ServletConfig将在本章的1.6节中讲解。
注意线程安全性。Servlet实例会被一个应用程序中的所有用户共享,因此不建议使用类级变量,除非它们是只读的,或者是java.util.concurrent.atomic包的成员。
下一节“编写基础的Servlet应用程序”将介绍如何编写Servlet实现。
《Servlet、JSP和Spring MVC初学指南》——导读 Java Servlet技术简称Servlet技术,是Java开发Web应用的底层技术。由Sun公司于1996年发布,用来代替CGI——当时生成Web动态内容的主流技术。CGI技术的主要问题是每个Web请求都需要新启动一个进程来处理。创建进程会消耗不少CPU周期,导致难以编写可扩展的CGI程序。
《Servlet、JSP和Spring MVC初学指南》——2.5 小结 本章中,你已经学习了会话管理的概念以及4种会话管理技术,URL重写和隐藏域是轻量级的会话跟踪技术,适用于那些仅跨少量页面的数据。而cookies和HttpSession对象,更加灵活但也有限制,尤其是在应用HttpSession时会消耗服务器内存。
《Servlet、JSP和Spring MVC初学指南》——2.4 HttpSession对象 没有参数的getSession方法会返回当前的HttpSession,若当前没有,则创建一个返回。getSession(false)返回当前HttpSession,如当前存在,则返回null。getSession(true)返回当前HttpSession,若当前没有,则创建一个getSession(true)同getSession()一致。
《Servlet、JSP和Spring MVC初学指南》——2.3 Cookies Cookies是一个很少的信息片段,可自动地在浏览器和Web服务器间交互,因此cookies可存储在多个页面间传递的信息。Cookie作为HTTP header的一部分,其传输由HTTP协议控制。此外,你可以控制cookies的有效时间。浏览器通常支持每个网站高达20个cookies。
《Servlet、JSP和Spring MVC初学指南》——2.2 隐藏域 使用隐藏域来保持状态类似于URL重写技术,但不是将值附加到URL上,而是放到HTML表单的隐藏域中。当表单提交时,隐藏域的值也同时提交到服务器端。隐藏域技术仅当网页有表单时有效。该技术相对于URL重写的优势在于:没有字符数限制,同时无须额外的编码。但该技术同URL重写一样,不适合跨越多个界面。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
相关文章
- JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中
- 【Spring Boot】Spring Boot之两种引入spring boot maven依赖的方式
- 新闻发布项目——后台JSP界面adminManage/addNews.jsp
- 新闻发布项目——后台JSP界面adminManage/editNews.jsp
- 新闻发布项目——后台JSP界面adminManage/editNews.jsp
- 新闻发布项目——后台JSP界面adminManage/manageTopic.jsp
- 新闻发布项目——后台JSP界面adminManage/modifyNews.jsp
- 新闻发布项目——后台JSP界面adminManage/newsPage.jsp
- Spring Bean Scope 有状态的Bean 无状态的Bean
- 《转载》Spring MVC之@RequestBody, @ResponseBody 详解
- spring cloud: Hystrix(八):turbine集群监控(dashboard)
- Spring Boot 之 RESRful API 权限控制
- jsp学习--JavaBean定义和在Jsp中使用JavaBean
- [Java Spring] Convertors
- [Spring] Properties for project configuration
- spring cloud 学习笔记 服务注册与发现(二)
- spring boot:在项目中引入第三方外部jar包集成为本地jar包(spring boot 2.3.2)
- spring MVC 使用注解返回json
- spring boot单元测试之十六:junit5:用@Timeout注解判断测试运行是否超时(spring boot 2.4.4)
- Spring MVC原理学习之how is return type handled
- 【工作流Activiti7】2、Activiti7 与 Spring Boot 及 Spring Security 整合
- 学习Spring Boot:(十四)spring-shiro的密码加密
- Spring bean的生命周期
- JSP 获得Spring 注射对象
- 【Spring注解驱动开发】使用@Import注解给容器中快速导入一个组件
- 005-spring-data-elasticsearch 3.0.0.0使用【三】-spring-data之Spring数据扩展
- Spring Cloud Ribbon结合RestTemplate实现负载均衡
- 【Spring源码学习】spring IOC容器管理
- 【日志系统最全】Spring Cloud Sleuth使用ELK收集&;分析日志