总结<%@include file=\"大众xxx.jsp\"大众%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的期间,而<jsp:include page=\公众xxx.jsp\"大众>是jsp中的动作指令,其文件的包含是发生在编译期间,也便是将java文件编译为class文件的期间利用静态包含只会产生一个class文件,而利用动态包含会产生多个class文件 利用静态包含,包含页面和被包含页面的request工具为同一工具,由于静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request工具可以取到的参数范围要相对大些,不仅可以取到通报到包含页面的参数,同样也能取得在包含页面向下通报的参数
jsp有哪些内置工具?浸染分别是什么?
jsp有哪些内置工具?浸染分别是什么?九个内置工具:
pageContextpageconfigrequestresponsesessionapplicationexceptionout个中,request、response、session、application、config这五个工具和Servlet的API是一样的。这5个工具我就不阐明了。
在JSP中,尤其主要的是pageContext工具。
pageContext是内置工具中最主要的一个工具,它代表着JSP页面编译后的内容(也便是JSP页面的运行环境)!
,也便是说,通过pageContext可以获取到其他的8个内置工具!
看下效果:pageContext作为域工具类似于request,session,ServletContext作为域工具而言都有以下三个方法:setAttribute(String name,Objcet o)getAttribute(String name)removeAttribute(String name)当然了,pageContext也不例外,pageContext也有这三个方法!
pageContext实质上代表的是当前JSP页面编译后的内容,作为域工具而言,它就代表着当前JSP页面(也便是page)!
也便是说:pageContext域工具只在page范围内有效,超出了page范围就无效了!
首先来看看在page范围内能不能利用效果如下:我们现在来试验一下是不是超出了page范围就无效了!
在2.jsp中request域工具设置属性企图在1.jsp中pageContext取出request存进去的属性效果如下:
pageContext实质上代表着编译后JSP的内容,pageContext还可以封装了访问其他域的方法!
上面的pageContext默认是page范围的,但pageContext工具重载了set、get、removeAttribute这三个方法getAttribute(String name,int scope)setAttribute(String name,Object value,int scope)removeAttribute(String name,int scope)多了一个设置域范围的一个参数,如果不指定默认便是page。当然了,pageContext把request、session、application、page这几个域工具封装着了静态变量供我们利用。PageContext.APPLICATION_SCOPEPageContext.SESSION_SCOPEPageContext.REQUEST_SCOPEPageContext.PAGE_SCOPE刚才我们没有利用重载方法的时候,利用pageContext是无法获取到request域工具设置的属性的。现在我们利用重载后的方法看一下能不能获取得到!
pageContexst还有这么一个方法:findAttribute(String name)该方法会查找各个域的属性,从小到大开始探求!
也便是page—>request->session->application。我们用此方法看能不能查找出request域工具的属性吧!
page工具
内置工具page是HttpJasPage工具,实在page工具代表的便是当前JSP页面,是当前JSP编译后的Servlet类的工具。也便是说:page工具相称于普通java类的this
exception工具内置工具exception是java.lang.Exception类的工具,exception封装了JSP页面抛出的非常信息。exception常常被用来处理缺点页面前面我们已经讲过了怎么设置缺点页面了,下面我们就来大略利用一下exception工具吧1.jsp页面error.jsp页面效果:总结:request 用户端要求,此要求会包含来自GET/POST要求的参数response 网页传回用户真个回应pageContext 网页的属性是在这里管理,代表的编译后JSP内容session 与要求有关的会话期application servlet 正在实行的内容out 用来传送回应的输出config servlet的构架部件page JSP网页本身exception 针对缺点网页,未捕捉的例外jsp和servlet的差异、共同点、各自运用的范围?
jsp和servlet的差异、共同点、各自运用的范围?JSP是Servlet技能的扩展,实质上便是Servlet的大略单纯办法。JSP编译后是“类servlet”。Servlet和JSP最紧张的不同点在于:Servlet的运用逻辑是在Java文件中,并且完备从表示层中的HTML里分离开来。而JSP的情形是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet紧张用于掌握逻辑。属性浸染域范围
属性浸染域范围page【只在一个页面中保存属性,跳转页面无效】requet【只在一次要求中保存属性,做事器跳转有效,浏览器跳转无效】session【在一个会话范围中保存属性,无论何种跳转均有效,关闭浏览器后无效】application【在全体做事器中保存,所有用户都可以利用】运用处景:
request:如果客户向做事器发要求,产生的数据,用户看完就没用了,像这样的数据就存在request域,像新闻数据,属于用户看完就没用的session:如果客户向做事器发要求,产生的数据,用户用完了等一下子还有用,像这样的数据就存在session域中,像购物数据,用户须要看到自己购物信息,并且等一下子,还要用这个购物数据结帐servletContext:如果客户向做事器发要求,产生的数据,用户用完了,还要给其它用户用,像这样的数据就存在servletContext域中,像谈天数据写出5种JSTL常用标签
写出5种JSTL常用标签<c:if>,<c:item>,<c:foreach>,<c:out>,<c:set>
写一个自定义标签要继续什么类
写一个自定义标签要继续什么类我们可以有两种办法来实现自定义标签:
传统办法,实现Tag接口(老方法)大略办法,继续SimpleTagSupport类SimpleTagSupport类的实行顺序(事理):
①WEB容器调用标签处理器工具的setJspContext方法,将代表JSP页面的pageContext工具通报给标签处理器工具②WEB容器调用标签处理器工具的setParent方法,将父标签处理器工具通报给这个标签处理器工具。【把稳,只有在标签存在父标签的情形下,WEB容器才会调用这个方法】③如果调用标签时设置了属性,容器将调用每个属性对应的setter方法把属性值通报给标签处理器工具。如果标签的属性值是EL表达式或脚本表达式,则WEB容器首先打算表达式的值,然后把值通报给标签处理器工具。④如果大略标签有标签体,容器将调用setJspBody方法把代表标签体的JspFragment工具通报进来⑤实行标签时:容器调用标签处理器的doTag()方法,开拓职员在方法体内通过操作JspFragment工具,就可以实现是否实行、迭代、修正标签体的目的。总结
SimpleTagSupport,一样平常调用doTag方法或者实现SimpleTag接口
JSP是如何被实行的?实行效率比SERVLET低吗?
JSP是如何被实行的?实行效率比SERVLET低吗?当客户端向一个jsp页面发送要求时,Web Container将jsp转化成servlet的源代码(只在第一次要求时),然后编译转化后的servlet并加载到内存中实行,实行的结果response到客户端jsp只在第一次实行的时候会转化成servlet,往后每次实行,web容器都是直接实行编译后的servlet,以是jsp和servlet只是在第一次实行的时候不一样,jsp慢一点,往后的实行都是相同的如何避免jsp页面自动天生session工具?为什么要这么做?
如何避免jsp页面自动天生session工具?为什么要这么做?可以利用页面指令显式关掉,代码如下:
<%@ page session=\公众false\公众 %>
jsp的缺陷?
jsp的缺陷?1)不好调试2)与其他脚本措辞的交互(可读性差)说出Servlet和CGI的差异?
说出Servlet和CGI的差异?Servlet处于做事器进程中,只会有一个servlet实例,每个要求都会产生一个新的线程,而且servlet实例一样平常不会销毁CGI:来一个要求就创建一个进程,用完就销毁,效率低于servlet简述JSP的设计模式。
简述JSP的设计模式。在Web开拓模式中,有两个紧张的开拓构造,称为模式一(Mode I)和模式二(Mode II)
首先我们来理清一些观点吧:
DAO(Data Access Object):紧张对数据的操作,增加、修正、删除等原子性操作。Web层:界面+掌握器,也便是说JSP【界面】+Servlet【掌握器】Service业务层:将多个原子性的DAO操作进行组合,组合成一个完全的业务逻辑掌握层:紧张利用Servlet进行掌握数据访问层:利用DAO、Hibernate、JDBC技能实现对数据的增编削查JavaBean用于封装数据,处理部分核心逻辑,每一层中都用到!模式一指的便是在开拓中将显示层、掌握层、数据层的操作统一交给JSP或者JavaBean来进行处理!
模式一有两种情形:
完备利用JSP做开拓:
优点:开拓速率贼快,只要写JSP就行了,JavaBean和Servlet都不用设计!小幅度修正代码方便,直接修正JSP页面交给WEB容器就行了,不像Servlet还要编译成.class文件再交给做事器!
【当然了,在ide下开拓这个也不算是事】缺陷:程序的可读性差、复用性低、代码繁芜!
什么jsp代码、html代码都往上面写,这肯定很难阅读,很难重用!
利用JSP+JavaBean做开拓:
优点:程序的可读性较高,大部分的代码都写在JavaBean上,不会和HTML代码稠浊在一起,可读性还行的。可重复利用高,核心的代码都由JavaBean开拓了,JavaBean的设计便是用来重用、封装,大大减少编写重复代码的事情!缺陷:没有流程掌握,程序中的JSP页面都须要检讨要求的参数是否精确,非常发生时的处理。显示操作和业务逻辑代码事情会紧密耦合在一起的!
日后掩护会困难
Mode II 中所有的开拓都因此Servlet为主体展开的,由Servlet吸收所有的客户端要求,然后根据要求调用相对应的JavaBean,并所有的显示结果交给JSP完成!
,也便是俗称的MVC设计模式!
MVC设计模式:
显示层(View):紧张卖力接管Servlet通报的内容,调用JavaBean,将内容显示给用户掌握层(Controller):紧张卖力所有用户的要求参数,判断要求参数是否合法,根据要求的类型调用JavaBean,将终极的处理结果交给显示层显示!模型层(Mode):模型层包括了业务层,DAO层。
总结
(1)ModelI,JSP+JavaBean设计模式。(2)ModelII,MVC设计模式。原文地址:https://dwz.cn/NhBjgHRk作者:Java3y