JSP初级学习总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36500554/article/details/82843562

1.JSP:Java Server Pages。可以理解为:JSP=HTML+JAVA代码片段

2.设定Eclipse中JSP的编码为UTF-8,以及换行符为unix格式。

3.JSP编译运行。当第一次加载JSP页面时,因为要将JSP文件转换为Servlet类,所以响应速度较

     当再次请求时,JSP容器就会直接执行第一次请求时产生的Servlet,而不会再重新转换JSP文件,所以其执行速度较快。

4.JSP页面组成

     JSP代码放在特定的标签中,然后嵌入到HTML代码中。

     开始标签、结束标签和元素内容 三部分统称为JSP 元素(Elements)

     JSP元素可分成三种不同的类型:

     ◦脚本元素(Scripting)

     ◦指令元素(Directive)

     ◦动作元素(Action)

     注意:JSP的标签必须要完结。

5.三种元素的说明:

     A.脚本元素 规范JSP 网页所使用的Java 代码,

          包括:HTML注释、隐藏注释、声明、表达式和脚本段。

     B.指令元素 是针对JSP引擎的,并不会直接产生任何看得见的输出。

          包括:inc1ude指令、page指令和taglib指令。

     C.动作元素 利用XML语法格式的标记来控制Servlet引擎的行为。

6.JSP注释:

     A.html的注释 ----发送到客户端,在浏览器右键源码中可见

          <!--注释[<%=表达式%>]-->

     B.jsp隐藏的注释 ----不发送到客户端,不可见

          <%--注释--%>

     C.java隐藏注释 ----客户端也看不见

          存在于<% %>标签中的Java单行注释和多行注释

7.在JSP程序中用到的变量和方法是需要声明的,声明的语法如下:核心格式:<%! ....%>

       <%! 声明;[声明;]…%> //必须以;结尾

     例如:

          <%! int i=6;%>

          <%! int a,b,c;double d=6.0;%>

          <%! Date d=new Date(); %>

8.JSP的表达式

     是由变量、常量组成的算式,它将JSP生成的数值嵌入HTML页面,用来直接输出Java代码的值。

表达式的语法规则如下: <%= 表达式 %>

注意:

     A.不能用一个分号(“;”)来作为表达式的结束符。

     B.“<%=”是一个完整的标记,中间不能有空格

     C.表达式元素包含任何在Java语言规范中有效的表达式。

说明,在开发中要尽量使用表达式输出代替out.println()输出

9.JSP脚本段(Scriplet)是一段Java代码。可以包含任意行合法的脚本语句,脚本段是一个代码片断,在服务器处理请求过程中被执行。其语法规则如下:

    <% 代码 %>

10.会在Eclispe中调出这些片段小提示。在光标处插入对应的标签。

11.include指令:

     在JSP网页中插入其他的文件,有两种方式:

     ◦include指令

          include指令称为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件可以是JSP文件、HTML文件或者其他文本文件,但是必须保证插入后形成的新文件符合JSP页面的语法规则

          其指令形式如下:

          <%@ include file=”相对地址”%>

          include指令只有一个属性:file。

     ◦jsp:include动作

12.page指令称为页面指令,几乎在所有JSP页面顶部都会看到page指令。

<%@ page language=”脚本语言”

          extends=”继承的父类名称”

          import=”导入的java包或类的名称”

          session=”true/false”

          buffer=”none/8kB/自定义缓冲区大小”

          autoflush=”true/false”

          isThreadSafe=” true/false”

          info=”页面信息”

          errorPage=”发生错误时所转向的页面相对地址”

          isErrorPage=”true/false”

          contentType=”MIME类型和字符集”

%>

     import

     ◦用来导入将要用到的一个或多个包/类,例如:

     <%@ page import=”java.util.Date”%>

     <%@ page import=”java.util.*”%>

     isErrorPage:这个属性的默认值为“false”

     isErrorPage用来指定目前的JSP网页是否是另一个JSP网页的错误处理页,通常与errorPage属性配合使用。特别说明:如果页面错误的提示内容没有使用exception对象,值为false也是可以的,但是要使用exception对象,必须为true

     注意:

     A.在一个页面中可以使用多个<%@ page %>指令,分别描述不同的属性

     B.每个属性只能用一次,但是import指令可以多次使用。

     C.<%@ page%>指令区分大小写。

     可以在Tomcat的安装目录/conf/web.xml中查看到所有已知的MIME类型

13.taglib指令

     用来定义一个标记库以及标记的前缀,其语法规则如下:

            <%@ taglib uri=”URIToLibrary” prefix=”标记前缀”%>

14.JSP动作:

     JSP动作功能:

          A.JSP动作元素用来控制JSP引擎的行为

          B.可以动态插入文件、重用JavaBean组件、导向另一个页面等。

     JSP动作元素:----注意大小写敏感

          jsp:include动作:在页面得到请求时包含一个文件。

          jsp:forward动作:引导请求者进入新的页面。

          jsp:plugin动作:连接客户端的Applet或Bean插件。

          jsp:useBean动作:应用JavaBean组件

          jsp:setProperty动作:设置JavaBean的属性

          jsp:getProperty动作:获取JavaBean的属性并输出

15.jsp:include动作

     在即将生成的页面上动态的插入文件,它在页面运行时才将文件插入,对被插入文件进行处理。也就是说它是在页面产生时插入文件,其语法如下:

       <jsp:include page=”文件相对路径” flush=”true”/>

       <jsp:include page=“文件相对路径” flush=“true”>

              <jsp:param name=“参数名1” value=“参数值1”/>

               <jsp:param name=“参数名2” value=“参数值2”/>

           …

       </jsp:include>

     说明:flush属性值为布尔型,若值为false表示这个网页全部读进来之后才输出,用户体验就不好;通常设为true,buffer满了就输出。

          被包含页面可以使用request.getParameter()方法进行参数接收!

16.include指令和jsp:include动作区别:

          A.include指令是静态的,是在JSP文件被转换成Servlet的时候引入文件,它把被插入文件插到当前位置后再进行编译

          B.jsp:include动作是动态的,插入文件的时间是在页面被请求的时候。JSP引擎不把插入文件和原JSP文件合并成一个新的JSP文件,而是在运行时把被插入文件包含进来。

          注意:如果包含页面时需要传递参数,则只能使用jsp:include动作 

          特别说明:被包含的页面如果有图片等标签,当图片不能显示时,要特别注意,当前路径的基准是外面的JSP页面,而不是被包含页面的位置基准!

          建议优先使用动态包含!

17.jsp:forward动作 ----服务器跳转

          用于停止当前页面的执行,转向另一个HTML或JSP页面。

          在执行中JSP引擎不再处理当前页面剩下的内容,缓冲区被清空。

          在客户端看到的是原页面的地址,而实际显示的是另一个页面的内容。

          <jsp:forward page=“文件名”/>

          <jsp:forward page=“文件名”>

               <jsp:param name=“参数名1” value=“参数值1”/>

               <jsp:param name=“参数名2” value=“参数值2”/>

              …

          </jsp:forward>

服务器跳转:客户端浏览器的地址栏显示路径不变!

18.jsp:useBean动作

     ◦jsp:useBean动作用来装载一个将要在JSP页面中使用的JavaBean。

          它创建一个JavaBean实例并指定其名字和作用范围。

     ◦实际工程中常用JavaBean做组件开发,而在JSP中只需要声明并使用这个组件,这样可以较大限度地实现静态内容和动态内容的分离,这也是JSP的优点之一。

     在JSP中实例化一个bean的最简单的方法如下:

            <jsp:useBean id=“bean的名称” scope=”有效范围” class=“包名.类名” />

     scope属性的取值有四种:  page, request, session和application,默认值是page。或者:

          <jsp:useBean id=“bean的名称” scope=”有效范围” class=“包名.类名”>

                         实体

          < /jsp:useBean >

     实体的内容可以是:

          ◦合法的JSP程序代码

          ◦ <jsp:setProperty>和<jsp:getProperty>标签

          ◦一般的HTML代码

     注意:这种实例化形式下,只有当第一次实例化bean时才执行实体部分,如果是利用现有的bean实例则不执行实体部分。

jsp:useBean并非总是意味着创建一个新的bean实例。

----------------------------------------------------------

     JSP引擎根据useBean中id属性指定的名字,在一个同步块中,查找内置对象pageContext中是否包含该id指定的名字和scope指定的作用域的对象。

     如果该对象存在,JSP引擎把这样一个对象分配给用户。

     如果不存在则创建新的bean实例。

19.一个类作为JavaBean需要符合的要求:

          A.类必须放在包中,在web中没有包的类是不存在的;

          B.类必须声明为public的;

          C.必须要有无参构造方法,无参构造方法可以是显示定义或者隐式继承;

          D.对类的属性使用private封装,提供setter和getter方法;特殊情况下可以不提供setter方法!

20.jsp:setProperty动作

     用来设置已经实例化的bean对象的属性, jsp:setProperty动作的几种语法规则

     第一种是直接将属性值设置为字符串或表达式,形如:

          <jsp:setProperty name=“bean的名称” property=“bean的属性名称” value= “属性值”/>

     第二种方法用request的参数值来设置JavaBean的属性值,request参数的名字和JavaBean属性的名字可以不同,其语法规则如下:

       <jsp:setProperty name=“bean的名称” property=“bean的属性名称”

                         param= “request参数的名字”/>

     第三种方式:使用名称自动匹配

          <jsp:setProperty name="book" property="bookName" />

          <jsp:setProperty name="book" property="bookNum" />

     第四种方式:使用*通配符

          <jsp:setProperty name="book" property="*" />

21.jsp:setProperty动作的用法

     A.可以在jsp:useBean元素的外面使用jsp:setProperty:

     <jsp:useBean id="myName" ... />

       ...

     <jsp:setProperty name="myName" property="someProperty" ... />

     此时,不管jsp:useBean是找到了一个现有的bean,还是新创建了一个bean实例,jsp:setProperty都会执行。

B.把jsp:setProperty放入jsp:useBean元素的内部,如下所示:

       <jsp:useBean id="myName" ... >

             ...

       <jsp:setProperty name="myName"  property="someProperty" ... />

       </jsp:useBean>

     此时,jsp:setProperty只有在新建bean实例时才会执行,如果是使用现有实例则不执行jsp:setProperty。

22.jsp:getProperty动作

     用来获取beans的属性值,将其转换成字符串,然后输出。其语法规则如下:

       <jsp:getProperty name=“bean的名称” property=“bean的属性名称”/>

     注意:jsp:setProperty动作和jsp:getProperty动作必须与jsp:useBean动作一起使用,不能单独使用。

23.在Eclispe中运行使用JavaBean的JSP,不一定需要将编译后的Bean的class文件放在WEB-INF/classes下;见下图:

     JavaBean的删除:JavaBean属于哪个范围对象就调用哪个范围的内置对象的removeAttribute()方法删除

24.如何处理JSP页面中的代码<% %>包裹问题?即何时包裹,何时不包裹。

     可以认为是:

     A.输出指令不用包裹;B.<jsp:... 指令不需要包裹。C.HTML的标签不需要包裹;

25.JSP的9个内置对象:---容器自动实例化,不需要用户去实例化,可以直接使用

     pageContext---JSP页面容器、request---得到用户的请求信息、

     response---服务器向客户端的响应信息、session---用来保存一个用户的信息

     application---表示所有用户的共享信息、config---服务器配置,可以取得web.xml中的初始化参数

     out---页面输出、page---表示从页面中表示出来的一个Servlet实例

     exception---表示JSP页面所发生的异常,在错误页中才起作用,且错误页的isErrorPage的属性必须为true! pageContext request response session application config out page exception

page request session application response pageContext out config exception

26.JSP提供的4种属性保存范围:

     A.page 只在页面中保存属性,跳转之后则无效;---使用pageContext表示

     B.request 只在一次请求中保存属性,客户端跳转无效,但是服务器跳转后依然有效;

     C.session 在一次会话中保存,无论何种跳转都可以使用,但是新开的浏览器无法使用;

     D.application 在整个服务器上保存,所有用户都可以使用。

27.request的常用方法:

28.response的常用方法:

说明: response. setHeader("",2 );

     A.response.setHeader("refresh","2”); //设置两秒一刷新

     B.response.setHeader("refresh”,”3;URL=hello.htm”) ; // 3 秒后跳转到 hello.htm

     定时的时间如果为0 则为立刻跳转。----定时跳转为客户端跳转

     超链接跳转也是客户端跳转!

     C.response.sendRedirect(”hello.htm”); //直接跳转到hello.htm

----此跳转也是客户端跳转

29.Cookie的常用方法:

     Cookie c1 = new Cookie(”name",”zhangsan”); //定义新的Cookie 对象

     Cookie c2 = new Cookie(”age”,"25"); // 定义新的Cookie 对象

     c1.setMaxAge(60) ; //Cookie 保存60 秒

     c2.setMaxAge(60) ; //Cookie 保存60 秒

     response.addCookie(c1) ; //向客户端增加Cookie

     response.addCookie(c2) ; //向客户端增加Cookie

30.session 对象是javax.servlet.http.HttpSession 接口的实例化对象,

31.application 对象是javax.servlet.ServletContext 接口的实例化对象,从单词上翻译表示的

是整个Servlet 的上下文, ServletContext 代表了整个容器的操作

例如:

     String path = application.getRealPath(”/”); //得到当前虚拟目录下对应的真实路径

     String path= this.getServletContext().getRealPath("/"); //得到当前虚拟目录下对应的真实路径-----尽量使用this.getServletContext()来代替application 对象

32.config 对象是javax.servlet.ServletConfig 接口的实例化对象,主要的功能是取得一些初

始化的配置信息。

所有的初始化参数必须在web.xml 中配置,即如果一个JSP 文件要想通过初始化参数取得一些信息, 则一定要在web.xml 文件中完成映射。

33.out 对象是javax.servlet.jsp.JspWriter 类的实例化对象, 主要功能就是完成页面的输出操作,使用println()或print()方法输出,但是从实际的开发来看,直接使用out 对象的几率较小,

34.pageContext 对象是javax.servlet.PageContext 类的实例,主要表示一个JSP 页面的上下文,在此类中除了之前讲解过的属性操作外,还定义了如表6-15 所示的一些方法。

例子:

     // 执行页面跳转

     pageContext.forward("pagecontext_forward_demo02 .jsp?info=AABB") ;

     // 从session 属性范围中取出属性, 并执行向下转型操作

     String info = pageContext.getRequest().getParameter("info”);

2.27补充:

先有servlet 后有jsp    servlet是客户端服务小程序 后开发出jsp不再用繁琐的servlet拼凑前端页面,而专注于处理客户端传来的信息。

猜你喜欢

转载自blog.csdn.net/qq_36500554/article/details/82843562