Web开发入门之Servlet(二)

Servlet技术2

一、ServletConfig接口

① Servlet接口的init(ServletConfig config)方法有有一个ServletConfig类型的参数。当Servlet容器初始化一个Servlet对象时,会为这个Servlet对象创建一个ServletConfig对象。在Servlet对象中包含了Servlet的初始化参数信息,此外,ServletConfig对象还与当前Web应用的ServletContext对象关联。Servlet容器在调用Servlet对象的init(ServletConfig config)方法时,会把ServletConfig对象作为参数传递给Servlet对象,init(ServletConfig config)方法会使得当前Servlet对象与ServletConfig对象之间建立关联关系。

② 在ServletConfig接口中定义了以下方法:

●getInitParameter(String name)

● getInitParameterNames()

●getServletContext()

●getSevletName()

③ 在web.xml文件中,配置<servlet>时可以为<servlet>配置0~N个初始化参数,例如:

<servlet>
  <servlet-name>xxx</servlet-name>
  <servlet-class>cn.servlet.MyServlet</servlet-class>
  <init-param>
    <param-name>p1</param-name>
    <param-value>v1</param-value>
  </init-param>
  <init-param>
    <param-name>p2</param-name>
    <param-value>v2</param-value>
  </init-param>
</servlet>

二、ServletContext接口(重要)

① ServletContext是Servlet与Servlet容器之间直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象。每个Web应用都有唯一的ServletContext对象。

② 功能:1.在不同servlet之间传递数据,作用范围是整个web应用。

2.在web.xml可以配置整个web应用的初始化参数,利用ServletContext去获得。

3. 在不同servlet之间进行转发。

4.读取资源文件

三、避免并发问题

① 当多个客户同时请求访问Web应用中的同一个Servlet时,可能会导致并发问题,并发问题有两种有效的解决措施。

1.利用同步代码块解决问题。缺陷是,同一时间同步代码块只能处理一个 请求,效率很低下,所以同步代码块中尽量只包含核心的导致线程安全问题的代码。

2.为该servlet实现SingleThreadModel接口,此为一个标记接口,被标记的servlet将会在内存中保存一个servlet池,如果一个线程来了而池中没有servlet对象处理,则创建一个新的。如果池中有空闲的servlet则直接使用。这并不能真的解决线程安全问题。此接口已经被废弃。

② 两种解决方案都不够完美,所以尽量不要在servlet中出现成员变量。

时间: 2024-10-19 14:28:05

Web开发入门之Servlet(二)的相关文章

Java Web开发入门之Servlet(二)

简介 我也苦恼自己的博客书写格式很烂,标题+代码格式.因为每天课程量比较大,没时间花在书写格式上面,如看不习惯请多多见谅.我坚持每天书写博客主要是养成一个习惯,并一直延续下去,虽然内容很空泛,目的也算达到了,总之为了巩固知识点,坚持不懈 Servlet快速入门 0. Servlet简介 什么是servlet 它其实就是java类,运行在服务器端,主要用途就是处理用户发送HTTP请求,并且作出响应 学习两个包:javax.servlet/javax.servlet.http Servlet容器就是

Java Web开发入门之Servlet代码篇(三)

1. ServletConfig获取参数&测试实例化/初始化/销毁方法 public class Servlet01_ServletConfig extends HttpServlet { public Servlet01_ServletConfig() { System.out.println("实例化~~~~~~~~~~"); } @Override public void init() throws ServletException { System.out.printl

Django web 开发入门教程 (二)

创建 models 每一个通过Django编写的应用都包含一个遵循特定约定 Python包. Django 包含一个自动生成基本目录结构的工具, 所有你不必创建目录,只需关注编写代码. Projects vs. apps What’s the difference between a project and an app? An app is a Web application that does something – e.g., a Weblog system, a database of

Web开发入门学习笔记

公司web项目终于要启动了,本以为django学习可以在实战中进行,结果最终使用了Drupal框架,好吧,那我们就PHP走起,买了本<细说PHP>,先跟着过一遍Web开发入门. HTTP协议 HTTP协议:所有的WWW文件都必须遵守HTTP协议,HTTP是客户端浏览器或者其他程序与Web服务器之间的应用层通信协议.HTTP协议建立在TCP/IP协议,也就是说,是一种可靠的传输协议,意味着两台设备在传输之前必须先建立可靠连接(握手),由客户端发起到服务器端的指定端口(默认为80)HTTP请求,并

SharePoint 2013开发入门探索(二)- 列表操作

我们如何用代码对SharePoint列表做些例如增删改查的操作呢?如果您的程序可以部署到服务器上,就可以使用 服务器对象模型,因为服务器对象模型提供的功能最多,限制最少:否则可能要选择客户对象模型等其他方式,这可能会遇到一些功能限制:另外还有一些其他的访问方式,例如Web服务等.如何在 SharePoint 2013 中选择正确的 API 集请参考链接 http://msdn.microsoft.com/zh-cn/library/jj164060.aspx. 我们首先研究下服务器对象模型.使用

PHP Web开发入门流程

在学习WEB开发前,至少有一个对C或者计算机编程任何一种语言的基本学习,这会对你以后的开发有一定的启蒙作用. 一.Web开发入门 推荐学习网址: http://www.w3school.com.cn/ http://www.imooc.com/   //慕课网 这两个是笔者最开始学习的网址,上面囊括了HTML/CSS/JAVASCRIPT/PHP/MYSQL等许多基础知识. 前一个适合直接看代码学习,很快也稍微枯燥 第二个网址适合喜欢老师讲解的类型 这种类型的网站有很多,如果可以科学上网的话,那

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

Web开发入门教程:Pycharm轻松创建Flask项目

Web开发入门教程:Pycharm轻松创建Flask项目 打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask.Django等等,我们选择生成Flask的demo程序 选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置 我们可以手动来启动这个Flask项目,但是这不是很理智的,在Pycharm上面有个run,我们可以选择run来启动Flask的服务,默认打开

javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)

一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录,在firstServlet目录下创建WEB-INF/classes目录 在classes目录下,写servlet程序. 类FirstServlet.java 1 /** 2 * 3 */ 4 package com.hlcui.servlet; 5 6 import java.io.IOExcept