servlet基础学习总结

Servlet的任务

1、  读取客户端发送的显示的数据,包括HTML表单和一些客户端程序的表单

2、  读取客户端发送的隐式的数据,包括cookies、媒体类型等

3、  处理数据并产生结果

4、  向客户端返回显示的数据,比如HTML/XML等文本文件,二进制文件(gif图像),Excel

5、  向客户端返回隐式的Http响应,比如cookies,返回的文档类型

 

Servlet的生命周期

1、  init()方法进行初始化

只调用一次,会简单的加载或创建一些数据

2、  service()方法处理客户端的请求

service()方法有servlet容器调用,只需要根据需求重载doGet,doPost方法即可

3、  destroy()方法终止servlet

只调用一次,可以关闭数据库连接,结束后台线程,将servlet对象标记为垃圾回收

Ps:servlet容器中有很多servlet实例,一个线程执行一个servlet实例的service()方法

Servlet访问URL的配置

客户端都是通过URL来访问web服务器资源,类似于远程访问某一台计算机的文件系统(某一个文件夹下的资源)。要想访问servlet,就必须把servlet映射到某一个地址上。在web.xml中的配置如下

<servlet>

<servlet-name>servlet的命名</servlet-name>

<servlet-class>servlet类名</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>与上面的servlet命名对应</servlet-name>

<url-pattern>地址。。相对地址</url-pattern>

</servlet-mapping>

Ps:此处可以有很多<servlet-mapping>,而且可以是相同的servlet-name指向不同的URL,那样不同的URL都可以访问相同的servlet

缺省servletURL用斜杠(/)表示,只要是在web.xml中找不到对应的servlet-mapping都访问这个缺省的servlet

线程安全问题

多个客户端访问同一个servlet的时候,事实上是创建了多个线程,同时访问这个servlet,这样就存在多线程并发访问同一资源,可能会造成数据的错误。

网上给的解决办法:1、对对象加锁,但是改变了访问策略(相当于每一个客户端是排队访问);2、实现SingleThreadModel接口,事实上是实例化了多个对象,每一个线程相当于单线程访问,对资源的操作互不影响,但是这个方法过时(Dprecated)了

Servlet初始化参数

在web.xml中用<init-param>配置参数,格式如下

<servlet>

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

<servlet-class>Servlet.test.servletdemo</servlet-class>

<!-- 配置servletdemo的初始化参数 -->

<init-param>

<param-name>id</param-name>

<param-value>song</param-value>

</init-param>

<init-param>

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

<param-value>123456</param-value>

<init-param>

</servlet>

可以在程序中用ServletConfig获取参数:当servlet配置了初始化参数后,web容器在创建servlet实例的时候会自动将参数封装到ServletConfig对象中,然后通过SevletConfig的方法(get**)获取参数

ServletContext对象

Web容器在启动时会为每一个web应用创建一个ServletContext对象,ServletConfig中维护了ServletContext的引用,因此可以通过ServletConfig中的方法得到web应用的ServletContext。每一个servlet共用一个ServletContext,因此可以利用ServletContex在servlet之间进行通讯。

ServletContext可以通过web.xml配置初始化参数,格式如下:

<context-param>

<param-name>address</param-name>

<param-value>Beijing.haidian.xueyuan.Road</param-value>

</context-param>

请求转发:一个对servletA的请求转发至servletB,这样就可以达到本来对A的地址访问,结果转到对B的地址访问,操作如下:

A的类中:

ServletContext context = this.getServletContext();

RequestDispatcher rd = context.getRequestDispatcher(“B的访问地址”);

rd.forward(request, response);

B的类中,无变化

Servlet处理表单数据

1、  利用getParameter()方法可以很简单的获得传递的数据

2、  利用getParamtername()方法可以获得全部表单的数据

3、  利用getParameterValue(ParameterName)方法可以获得单值或多值的数据

Servlet可以通过方法获取HTTP请求的头部信息和设置HTTP响应的头部信息

HttpServletResponse对象可以调用senderror()方法,向客户端返回错误(状态码)

Servlet过滤器Filters(实现Filter接口)

配置和servlet类似,需要放在<filter>标签下,一个URL可以有多个过滤器,多个过滤器的顺序与web.xml中的顺序是一致的

调用的顺序:init----doFilter----destroy

Servlet异常处理

在web.xml中进行配置

首先定义一个servlet映射,将错误处理方法映射到错误页面

然后定义error-code的错误页面和exception-code的错误页面,配置如下

<error-page>

<error-code>状态码</error-code>

<location>错误处理页面的地址</location>

</error-page>

<error-page>

<exception-type>异常完整名(eg.  java.io.IOException)</exception-type>

<location>异常处理页面的地址</location>

</error-page>

(个人观点:事实上,就是一旦出现这种错误或者抛出了这种异常就跳到定义的页面,跳到定义的页面之后又会被servlet拦截,执行相应的servlet)

Servlet Cookie

存储在客户端计算机上的文本文件

识别用户:服务器脚本向浏览器发送cookies,比如姓名,识别号码等;浏览器将cookies存储在本地;下一次浏览器访问服务器时将发送cookies给服务器,服务器通过cookies来识别用户。

Cookies可以读取,查找,设置,删除(将生存时间置为0然后添加到响应头即可)

Servlet Session

主要是用来维持服务器与客户端的交流信息

每一个session都有一个sessionid,服务器可以通过调用request.getSession()方法获取HttpSession对象,然后通过一系列方法可以对其进行操作

网页重定向

通过设置response的status和header,将网页重定向到另外一个网页,具体方法如下:

response.setStatus(response.SC_MOVED_TEMPORARILY);

response.setHeader("location", site);

site是新站点

网站点击计数器

可以在servlet或者过滤器Filter中实现,实现方法如下:

设置一个全局变量,每次调用do*方法的时候计数器加1,;如果只想对session会话计数,只需要增加isNew()方法来进行判断;还可以将计数器的值存入数据库,每次在init()方法的时候读取这个值,在destroy()方法中将值写会数据库

页面自动刷新

利用HttpServletResponse对象的setHeader方法设置刷新时间,实现如下:

response.setheader(“refresh”, 5);//刷新时间间隔为5s

时间: 2025-01-08 10:29:14

servlet基础学习总结的相关文章

SERVLETJSP学习(一)——Servlet基础 、 HTTP协议

1. Servlet基础 1.1. Web应用的演变 1.1.1. 单机程序 软件从附着于电脑硬件之日起,就在不断的进行着自我完善和演变.从其使用模式的角度出发,可以简单分为单机程序和网络程序.发展到今时今日仍有大量的不依赖网络的单机程序被我们使用,如记事本.Excel.PPT.ZIP压缩等软件都是大家熟知的装机必备软件. 1.1.2. 网络程序 当电脑越来越多的参与到日常生产生活中,单机程序已经不能满足企业的需要.企业级应用要求能够最大程度的让更多的客户端参与到协同办公之中,所以依赖于网络的程

JavaWeb-07(tomcat与web程序结构与Http协议与Servlet基础)

JavaWeb-07 JavaWeb-tomcat与web程序结构与Http协议与Servlet基础 HTTP协议(记住) 1.http协议:规定了客户端和服务端交流时的数据格式 a. WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议. b. HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式. c. HT

JSP/Servlet基础语法

相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html http://blog.csdn.net/liaoxiaohua1981/article/details/6761053 http://computer.c.blog.163.com/blog/static/102524482012314537670/ http://ww

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

Spring Framework基础学习

Spring Framework基础学习 Core support for dependency injection,transaction management,web applications,data access,messaging,testing and more 推荐的官方文章:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/index.html 一.Instrod

Android 零基础学习之路

第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收:构造函数.this关键字.方法和方法的参数传递过程.static关键字.内部类,Java的垃极回收机制,Javadoc介绍. 4.对象实例化过程.方法的覆盖.final关键字.抽象类.接口.继承的优点和缺点剖析:对象的多态性:子类和父类之间的转换.抽象类和接口在多态中的应用.多态带来的好处.

Servlet基础知识详解

Servlet基础知识详解 Servlet基础知识详解 Servlet程序执行全过程 Servlet映射路径 Servlet映射练习 Servlet生命周期 为什么要学习Servlet生命周期 Servlet重要的生命周期方法 模拟通过反射构造Servlet对象 Servlet单实例多线程 Servlet留给开发者的init方法 Servlet中核心对象学习 HttpServletRequest对象 HttpServletResponse对象 ServletConfig对象 ServletCon

Struts2基础学习总结

Struts2基础学习总结(一)---入门 Struts 2: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts2以WebWork为核心,采用拦

JAVA学习_零基础学习JAVA方法_零基础学习JAVA思路

在学习JAVA前,对于一个真正初学者(也就是从零开始学习JAVA人员)的一个问题:什么是JAVA,然后才是怎么学习JAVA?JAVA是sun microsystems在1995年推出的高级编程语言,其分为Java SE.Java EE.Java ME三大体系,而JAVA SE是JAVA的基础,继JAVASE之后是JAVAEE,JAVA ME.JAVASE是JAVAEE的基础,Servlet.JSP是框架的基础.数据库方面个人建议学习oracle,当然其它的像 MySQL,MSSQL,都可以,只要