servlet和JSP学习

原创 2013年12月04日 10:20:34

servlet是服务器端的java小程序,用于响应客户机的请求。在默认情况下,servlet采用一种无状态的请求——响应处理方式,主要作用是为了增强java服务器端的功能。

 

servlet是一个标准的java类,符合java类的一般规则。和一般的java类不同的是servlet可以处理Http请求。把这些java类的字节码文件放到servlet容器(如tomcat)的相应目录下时,他们就可以接受客户端响应了

 

在Web应用程序中,一个Servlet在一个时刻可能被多个用户同时访问,这时Web容器将为每个用户创建一个线程来执行Servlet,如果Servlet不涉及共享资源的问题,不必关心多线程问题。但如果Servlet需要共享资源,需要保证Servlet是线程安全的

下面是编写线程安全的Servlet的一些建议:

(1)用方法的局部变量保存请求中的专有数据。对方法中定义的局部变量,进入方法的每个线程都有自己的一份方法变量拷贝。任何线程都不会修改其他线程的局部变量。如果要在不同的请求之间共享数据,应该使用会话来共享这类数据。

(2)只用Servlet的成员变量来存放那些不会改变的数据。有些数据在Servlet生命周期中不发生任何变化,通常是在初始时确定的,这些数据可以使用成员变量保存,如数据库连接名称、其他资源的路径等。

(3)对可能被请求修改的成员变量同步。有时数据成员变量或者环境属性可能被请求修改。当访问这些数据时应该对它们同步,以避免多个线程同时修改这些数据。

(4)如果Servlet访问外部资源,那么需要同步访问这些资源。例如,假设Servlet要从文件中读写数据。当一个线程读写一个文件时,其他线程也可能正在读写这个文件。文件访问本身不是线程安全的,所以必须编写同步访问这些资源的代码。在编写线程安全的Servlet时,下面两种方法是不应该使用的:

(1)在Servlet API中提供了一个SingleThreadModel接口,实现这个接口的Servlet在被多个客户请求时一个时刻只有一个线程运行。这个接口已被标记不推荐使用。

(2)对doGet()或doPost()方法同步。如果必须在Servlet中使用同步代码,应尽量在最小的代码块范围上进行同步。同步代码越小,Servlet执行得才越好。

 

两种跳转方式分别是什么?有什么区别?

1.forward跳转:<jsp:forward page="跳转页面地址" />

2.response跳转:response.sendRedirect("跳转页面地址");

 

forward跳转:\\服务器端跳转,地址栏不改变;

response跳转:\\客户端跳转,地址栏改变;

 

response.sendRedirect("跳转页面地址");

request.getRequestDispatcher("/message.jsp").forward(request, response);

 

JSP 9种内置对象

 

内置对象特点:

1. 由JSP规范提供,不用编写者实例化。

2. 通过Web容器实现和管理

3. 所有JSP页面均可使用

4. 只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)

 

 常用内置对象:

1. 输出输入对象:request对象、response对象、out对象

2. 通信控制对象:pageContext对象、session对象、application对象

3. Servlet对象:page对象、config对象

4. 错误处理对象:exception对象

 

 

Request(Javax.servlet.ServletRequest)它包含了有关浏览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数。

 

Response(Javax.servlet.ServletResponse)作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等)

 

Out(Javax.servlet.jsp.JspWriter)out对象是JspWriter类的实例,是向客户端输出内容常用的对象

 

pageContext(Javax.servlet.jsp.PageContext)pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext

 

Session(javax.servlet.http.HttpSession)session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例。

 

Application(javax.servle.ServletContext)application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例

 

Page(Java.lang.Object)page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例

 

Config(javax.servlet.ServletConfig)config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。

 

Exception(Javax.lang.Throwable)在某个页面抛出异常时,将转发至JSP错误页面,提供此对象是为了在JSP中处理错误。只有在错误页面中才可使用<%@page isErrorPage=“true”%>

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象

servlet和jsp学习(一)

一、Table对象rows属性描述:返回表格的tr对象组成的集合语法:collection object.rowsrowIndex描述:获取行对象的索引数语法:int object.rowIndexi...
  • qq_19528953
  • qq_19528953
  • 2017年07月18日 11:01
  • 284

怎么学习Servlet和JSP

先学servlet: JSP它本质上来说是servlet和html的混合体,jsp中的内置对象都是来自与servlet,JSP在执行的时候会被先解释为servlet源程序的,jsp本质上就是一个...
  • QMW19910301
  • QMW19910301
  • 2016年12月05日 10:43
  • 934

Servlet/JSP学习总结

3月29日 一.Servlet技术 1.      编写一个Servelt,需要实现javax.servlet.Servlet接口。该接口定义了5个方法:init(ServletConfigcon...
  • u014251458
  • u014251458
  • 2015年04月14日 13:27
  • 629

JSP与Servlet学习总结(一)

以前刚学习java三大框架(struts2+hib)的时候
  • zhangjuh
  • zhangjuh
  • 2014年04月07日 20:29
  • 706

学习JSP和Servlet(一)

【前言】实习刚回来,赶紧补充一些java的知识,做了一个月的.NET,走之前一直在做JavaEE,所以最开始学习的SSH都忘记的差不多了,所以觉得从JSP和Servlet入手,重新开始Java的世界我...
  • cd18333612683
  • cd18333612683
  • 2017年08月09日 21:33
  • 166

自学jsp,servlet遇到的一些问题

2016/7/28 1、遇到的问题:一个大jsp包含一个小jsp,小jsp要用到外面大jsp中用js提取到的属性值,本想用参数方式把js提取到的属性值传递给小jsp,但是Js不能直接给JSP赋值。j...
  • LRY1994
  • LRY1994
  • 2016年09月09日 20:18
  • 375

JSP/servlet学习总结

1.       描述JSP和Servlet的区别、共同点、各自应用的范围 Jsp是带有java代码的html,而servlet是html编译成的java代码。 上述就是两者的区别。而共同...
  • qq_25333097
  • qq_25333097
  • 2015年05月09日 01:10
  • 811

自学jsp+servlet+ajax的一些知识的总结

1、Servlet+JSP+EL 表达式语言; 服务端 返回list  客服端 接收list request.setAttribute("lists", list); ${requestSco...
  • qq_18808965
  • qq_18808965
  • 2017年01月14日 21:58
  • 577

JSP九大内置对象与Servlet学习笔记

JSP九大内置对象用途、作用域、生命周期、常用方法、重点知识总结,JSP与Servlet关系心得笔记,望各位大神提出宝贵意见。...
  • zhangliangzi
  • zhangliangzi
  • 2015年11月21日 16:04
  • 5131

韩顺平Servlet与JSP视频课程心得与体会

1.同一用户在不同页面共享数据有四种方式:cookie技术,sendRedirect()转向技术,隐藏表单技术,session技术2.服务器为每一个请求的浏览器分配一个唯一的Session,因此它会占...
  • lishirong
  • lishirong
  • 2014年12月02日 09:47
  • 1927
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:servlet和JSP学习
举报原因:
原因补充:

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