哪个jlink接口定义义了 jspinit

JSP与Internet_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JSP与Internet
上传于||文档简介
&&J​S​P​与​I​n​t​e​r​n​e​t
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢文档名称:普通高校国防教育规范化管理系统的设计与实现--毕业论文.pdf
格式:pdf&&&大小:2.35MB&&&总页数:70
可免费阅读页数:70页
下载源文档需要:15元人民币
请务必先预览看看是否存在文不对题等情况,预览与实际下载的一致,本站不支持退款。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Pages(JSP)是基于Java语言的服务器端脚本技术JSP提供动
下载积分:100
内容提示:Pages(JSP)是基于Java语言的服务器端脚本技术JSP提供动
文档格式:PDF|
浏览次数:53|
上传日期: 16:15:02|
文档星级:
该用户还上传了这些文档
Pages(JSP)是基于Java语言的服务器端脚本技术JSP提供动
官方公共微信一、Jsp工作原理当一个JSP文件第一次被请求的时候,JSP引擎(本身也是一个Servlet)首先会把这个JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功,JSP引擎用javac把该Java源文件编译成相应的.class文件并将该.class文件加载到内存中。其次创建一个该Servlet的实例,并执行该实例的jspInit()方法(jspInit()方法在Servlet的生命周期中只被执行一次)。然后创建并启动一个新的线程,新线程调用实例的jspService()方法。(对于每一个请求,JSP引擎会创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程,每个客户端请求对应一个线程)。浏览器在调用JSP文件时,Servlet容器会把浏览器的请求和对浏览器的回应封装成HttpServletRequest和HttpServletResponse对象,同时调用对应的Servlet实例中的jspService()方法,把这两个对象作为参数传递到jspService()方法中。jspService()方法执行后会将HTML内容返回给客户端。如果JSP文件被修改了,服务器将根据设置决定是否对该文件进行重新编译。如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。 如果在任何时候由于系统资源不足,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时,jspDestroy()方法首先被调用, 然后Servlet实例便被标记加入“垃圾收集”处理。
二、include语法元素辨析1.include指令include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。语法:&%@ include file=&sample.jsp& %&2.include动作jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页 面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。语法: &jsp:include page=&sample.jsp& flush=&true
&& &jsp:param name=&name& value=&value&/& &/jsp:include& 其中参数设置可以没有,如果没有参数设置,则必须采用&jsp:include page=&sample.jsp& flush=&true&/&形式主要有两个方面的不同;1:执行时间上:&%@ include file=”relativeURI”%&
是在翻译阶段执行&jsp:include page=”relativeURI” flush=”true” /&
在请求处理阶段执行.2:引入内容的不同:&%@ include file=”relativeURI”%&引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.&jsp:include page=”relativeURI” flush=”true” /&引入执行页面或servlet所生成的应答文本.三、foward和sendRedirect的重定向1、 Forward这种方式是在服务器端作的重定向。服务器往client发送数据的过程是这样的:服务器在向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给client端。什么时候将缓冲区里的数据发送给client端呢?(1)当对来自client的request处理完,并把所有数据输出到缓冲区,(2)当缓冲区满,(3)在程序中调用缓冲区的输出方法out.flush()或 response.flushbuffer(),web container才将缓冲区中的数据发送给client。这种重定向方式是利用服务器端的缓冲区机制,在把缓冲区的数据发送到客户端之前,原来的数据不发送,将执行转向重定向页面,发送重定向页面的数据,重定向调用页的数据将被清除。如果在&JSP:FORWORD&之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么这种重定向方式将不起作用,这一点应该特别注意。public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{response.setContentType(&text/ charset=UTF-8&);ServletContext sc = getServletContext();RequestDispatcher rd =rd = sc.getRequestDispatcher(&/index.jsp&);rd.forward(request, response);}2、 sendRedirect这种方式是在客户端作的重定向处理。该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的URLs。如果传递到该方法的参数是一个相对的URL,那么Web container在将它发送到客户端前会把它转换成一个绝对的URL。public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{response.setContentType(&text/ charset=UTF-8&);response.sendRedirect(&/index.jsp&);}二、区别.1、forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法
是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。2、forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。3、基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。4、sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect(&login.jsp&),则会从当前servlet 的URL路径下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL: http://10.1.18.8:8081/dms/servlet/login.jsp,如果为response.sendRedirect(&/login.jsp&)则会从当前应用径下查找url:http://10.1.18.8:8081/login.jsp。而forward不能这样处理相对路径。四、Servlet的生命周期Servlet的生命周期由Servlet容器控制,该容器创建Servlet的实例。Servlet的生命周期就是指Servlet实例在创建之后响应客户请趟直到至销毁的全过程。Servlet实例的创建取决于Servlet的首次调用。Servlet接口定义了Servlet生命周期的3个方法。1
init():创建Servlet的实例后对其进行初始化。实现ServletConfig接口的对象作为参数进行传递。init方法在浏览器请求servlet或web server启动时加载运行。public void init()throws servletexception{}public void init(servletconfig conf)throws servletexception{super.init(conf);//init方法带servletconfig参数时必须有此句代码//此处写一些初始化操作。如连接数据库等。}2
service():响应客户端发出的请求。Service()方法接受ServletRequest接口和ServletResponse接口的对象来处理请求和发送响应。经常的用法是:不用service()方法,用dopost,doget方法来处理请求。其他的方法还有dotrace(),dooptions().dohead()方法,因trace,options.head信息已经在dopost,doget方法中包括,不必使用,doput(),dodelete()方法在web app不经常使用Service()方法的语法为:public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException其中,request是作为参数传递以存储客户端请求的ServletRequest接口的对象;ServletResponse接口的对象,它包含Servlet作出的响应。3
destroy():如果不需要处理的请求,则释放Servlet 实例。Destroy()方法的语法为:public void destroy(){}public void destroy(){super.dedtroy(conf);}注意:Servlet关闭时才销毁。五、内建对象JSP的内建对象不需要由JSP编写人员实例化,它们均由容器管理和实现,在所有的JSP页面中
都能使用.只在Scriptlet或者表达式中使用.它们是:1.request对象:代表请求对象,被包装成HttpServletRequest接口,通过getParameter方法得到request参数,通过GET,POST,HEAD等方法得到request的类型.通过Cookies,Referer等可以得到Http头.来自客户端的请求经Servlet容器处理后,由request对象进行封装,作为jspService()方法的一个参数由容器传递给JSP页面.主要方法有:request.getAttribute(&..&);request.getParameter(&xxx&);request.getParameterValues(&xxx&);request.getHeader(&xxx&)获取HTTP协议定义的文件头信息.request.getRequestURI()获取发出请求字符串的客户端地址.request.getRemoteHost()客户端名,request.getRemoteAddr()客户端IP地址.request.getServerName()服务器名字.request.getServletPath();客户端所请求的脚本文件的文件路径.request.getServerPort()获取服务器的端口号.request.setAttribute(&xxx&,&&);等.2.response响应请求对象,被包装成HttpServletResponse接口,与requst对象一样,是缓冲输出流,可以设置Http状态码和response响应头.主要的方法有:response.addCookie(Cookie cookie);response.encodeURL();response.getOutputStream();response.sendRedirect(&xxx&)把响应发到另一位置进行处理.3.pageContext被封装成javax.servlet.jsp.pageContext接口,它为JSP页面包装页面的上下文.由容器创建和初始化,管理对属于JSP中特殊可见部分中已命名对象的访问.可用getServletContext()返回Servlet Context对象(这个Servlet Context对所有的页面都是共享的.),forward(&xxx&)把页面重定向到另一页面或者Servlet组件上.4.session对象用来保存每个用户信息,以便跟踪每个用户的操作状态.其中session信息保存在容器中,session的ID保存在客户机的Cookiek .(一般情况中,用户每次登录系统时容器会给此用户分配一个唯一的标识session id,用于区别其它用户,当用户退出系统时,这个标识就会自动消失.其接口为HttpSession.主要的方法有:session.getId();getLastAccessedTime();setAttribute();5.application与服务器启动后创建.直到服务器关闭而停止,为多个应用程序保存信息.6.out对象:被封装成javax.servlet.jsp.JspWriter接口,它表示为客户打开的输出流,PrintWriter使用它向客户端发送输出流.即简单说向客户端输出数据.方法:out.print(....),out.newLine();out.flush();out.close();等,并可获取输出缓冲区的相关信息.如果要在页面中真正输出一个空行,需要用out.println(&&br&&)来实现.7.config被封装为javax.servlet.ServletConfig接口,它表示了Servlet的配置.当一个Servlet初始化时,容器把某些信息通过 此对象传递给这个Servlet.,常用的方法有:getServletContext();8.page是java.lang.Object类的一个实例,它指的是JSP实现类的实例.9

我要回帖

更多关于 jspinit 的文章

 

随机推荐