03_java web之servlet

原创 2013年12月05日 21:15:53
一、servlet入门
sun公司提供的用来开发动态web资源的技术,本质是一个java程序,能够运行在servlet容器(Tomcat)中
1.写一个类,实现servlet接口
1).编写一个FirstServlet类,实现GenericServlet接口
2).将Servlet的jar包加入Classpath
3).编译javac -d . FirstServlet
2.将写好的类注册到Tomcat中(web.xml文件中进行配置)
4).将编译后的文件保存到tomcat的WEB-INF/classes/目录下
5).配置web.xml,将java部署到服务器tomcat
<servlet>
<servlet-name>HelloServlet</servlet-name>--->Servlet名字
<servlet-class>com.itheima.HelloServlet</servlet-class>--->具体Servlet的全类名,不是文件夹
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>--->配置对应名字Servlet对外访问
<url-pattern>/servlet/HelloServlet</url-pattern>--->配置Servlet对外访问路径名
</servlet-mapping>
3.servlet的生命周期:
当Servlet第一次被访问到时,服务器会创建Servlet对象,立即调用Servlet的init方法执行初始化操作。从此这个Servlet
一直驻留在内存中,为后续的所有对此Servlet的访问服务,此后,每次对Servlet的访问都会造成Servlet中service方法执
行,当服务器关闭或web应用被移除出容器时,随着web应用的销毁Servlet也销毁,在Servlet销毁之前,服务器会调用Servlet
的destroy方法,做一些善后工作
4.servlet的继承结构:
servlet接口---定义了servlet应有的基本的方法 init、destroy、service
|
|--GenericServlet:对servlet姐都的一个默认实现类,对于一般我们不关注的方法,这个类帮我们做了默认实现,
除了service是抽象方法,需要继承者去实现,与协议无关,不具有协议相关的方法
|
|--HttpServlet:在GenericServlet的基础上,基于Http协议进行了增强,提供了许多和http协议
相关的方法,实现了GenericServlet中抽象的service方法。如果是get请求,提供doGet方法,
如果是post请求,实现doPost方法;创建servlet时,只需要覆盖相应的doGet和doPost方法即可,
一般情况下不建议覆盖service方法
5.servlet细节:
1).servletmapping标签:
1'.直接写一个固定的路径,通过这个固定的路径,访问当前Servlet
2'.使用*通配符进行配置,但只能使用下面两种固定的写法
以/开头并以/*结尾的路径
以*.xx的方式配置的路径
2).配置load-on-startup:
是Servlet随着服务器启动web应用加载后立即创建
3).配置缺省的servlet:
如果将某个Servlet的对外访问路径配置为/,则这个Servlet就是缺省Servlet,其他的Servlet都不处理的请求,由
缺省Servlet处理,浏览器在访问静态资源、错误提示页面时,都是"父web.xml"中配置的缺省Servlet进行输出,建
议不要自己配置缺省的Servlet,否则会导致静态资源、错误页面无法正确访问
4).线程安全:
由于默认情况下Servlet的对象在内存中只有一个,多个浏览器并发访问时可能会产生线程安全问题
我们可以使用锁机制解决安全问题,但容易造成程序的阻塞,效率降低
也可以使用SingleThreadModel接口,但是接口并不能解决线程安全问题,已经被废弃。建议在设计Servlet时,应该
尽量不要使用类成员变量和静态成员变量,如果一定要使用,则还是要用锁机制来访问线程安全问题,但是要注意,
尽量的早开锁,减少程序阻塞的时间
二、ServletConfig和ServletContext
1.ServletConfig代表当前Servlet在web.xml中的配置信息
1).获取Servlet在web.xml中配置的名字
2).获取web.xml中配置的Servlet的初始化信息
3).获取ServletContext对象
2.servletContext代表当前web应用,唯一对应当前web应用
1).作为域对象使用,在不同Servlet之间传递数据
作用范围:整个web应用
生命周期:当web应用被加载进容器时,创建代表整个web应用的ServletConfig对象,创建出来后驻留在内存中,
当服务器关闭或web应用被移除出容器时,ServletContext对象跟着销毁
域:一个域可以理解为一个框,这里面可以放置数据,一个域既然称作域,它就有一个可以看见的范围,这个范围内
都可以对这个域中的数据进行操作,那这样的对象就叫做域对象
2).获取web应用的初始化参数:在web.xml可以配置整个web应用的初始化参数,利用ServletContext去获得
3).实现请求转发:
请求转发:服务器内部流转
this.getServletContext().getRequestDispatcher("/...").forward(request,response);
4).读取资源文件:
1'.web应用中,读取文件时,如果使用相对路径/绝对路径,则到tomcat/bin目录下找资源;如果使用硬盘路径,可以
找到文件,但是一旦患了一个发布环境,所有的路径可能都是错的
2'.使用ServletContext.getRealPath(),会在传入的路径之前拼接当前web应用的硬盘路径,从而得到当前资源的硬盘
路径,从而读取资源
3'.通过类加载器加载资源:Classloader.getResource("").getPath();当前程序从哪个目录加载类,这个方法就从哪
个目录加载给定路径的资源



版权声明:本文为博主原创文章,未经博主允许不得转载。

javaWeb之手写Servlet

1. Servlet:一个Servlet就是一个标准的服务器端应用程序,它可以执行商务逻辑处理HTTP的访问请求。 (1)servlet是运行在服务器端的小型应用程序 (2)需要web容器的支持 ...
  • fly_yr
  • fly_yr
  • 2013年02月16日 22:53
  • 3191

web Servlet 3.0 新特性之web模块化编程,web-fragment.xml编写及打jar包

web Servlet 3.0 模块化  原本一个web应用的任何配置都需要在web.xml中进行,因此会使得web.xml变得很混乱,而且灵活性差,因此Servlet 3.0可以将每个Servle...
  • u014740338
  • u014740338
  • 2015年01月11日 18:51
  • 1011

关于 Servlet 和 Web

关于Servlet和Web那些事儿 ~~~关于Servlet和Web那些事儿 Servlet WebServlet    Servlet(Server Applet),全称Java Servlet,...
  • qing101
  • qing101
  • 2015年09月20日 00:09
  • 782

Servlet中Web.xml配置详解(二)

 5.2 分配JSP初始化参数给JSP页面提供初始化参数在三个方面不同于给servlet提供初始化参数。1)使用jsp-file而不是servlet-class。因此,WEB-INF/web.xml文...
  • heycao
  • heycao
  • 2009年07月29日 19:47
  • 5914

JavaWeb之Servlet课堂笔记[自己总结的]

1、什么是Servlet? Servlet是javax.servlet包下的一个接口 而Servlet程序是我们自定义的java类,它必须实现Servlet接口,或者继承GenericServle...
  • u013296413
  • u013296413
  • 2014年07月23日 13:32
  • 731

Servlet容器模型(一)Web应用程序的目录结构和部署

WEB应用程序都有严格定义的目录结构,不同的资源放在不同的目录,各种组件是通过部署描述文件定义的。 一、Web应用程序:由完成特定任务的各种Web组件构成并通过Web将服务展示给外界的应用程序。 二、...
  • cl05300629
  • cl05300629
  • 2013年07月12日 09:49
  • 2881

严重: Servlet [login_fali] in web application [/StudyforJSP] threw load() exception javax.servl

严重: Servlet [login_fali] in web application [/StudyforJSP] threw load() exception javax.servlet.Ser...
  • gaoranran916
  • gaoranran916
  • 2017年11月06日 10:14
  • 272

Servlet [springDispatcherServlet] in web application [/SpringMVC-1] threw load() exception java.lang

SpringMVC 启动时报 DispatcherServlet 找不到 转载 2016-11-28 14:54:59 严重: Servlet [springDispatcherSer...
  • java821643
  • java821643
  • 2017年08月01日 10:15
  • 1491

JavaWeb学习篇之----Servlet

今天来继续学习JavaWeb的相关知识,之前都是都介绍一些基本知识,从今天开始我们来说一下如何在服务器编写程序,这里就需要来介绍一下Servlet的相关知识了。Servlet就是一个能够运行在服务器端...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年04月01日 13:37
  • 6578

理解Servlet和Servlet容器、Web服务器等概念

转载自http://blog.csdn.net/iAm333之前在开源中国看到一篇文章《初学 Java Web 开发,请远离各种框架,从 Servlet 开发》,觉得很不错。想到自己之前一直对各种框架...
  • lz233333
  • lz233333
  • 2017年03月29日 21:39
  • 1846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:03_java web之servlet
举报原因:
原因补充:

(最多只允许输入30个字)