`
hackiller
  • 浏览: 18982 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

J2EE复习(五)JSP基础

阅读更多

一、JSP简介
JSP (Java Server Pages)是服务器端的脚本语言,是一种在HTML页面中加入Java语言而生成动态页面的技术:加入了新的标签(<%,%>,…)。
JSP是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。


二、JSP的执行过程
客户端请求JSP页面——>JSP Parser解析*.jsp编译为*.java——>javac命令编译成*.class——>执行class文件——>响应返回结果给客户端
JSP代码中包含JSP元素和Template data两类。Template data指的是JSP引擎不处理的部分,就是JSP引擎会把除在标记<%...%>以外的部分直接传递出去而不进行任何处理。
JSP在第一次或修改JSP文件后执行都会调用JSP Parser将*.jsp文件编译成servlet程序,所以会比较慢。


三、JSP基本语法
1. 两种注释类型
(1)HTML注释
可以在JSP代码中添加一段HTML格式的注释,此注释发生到客户端,但不在页面上显示,语法如下:
<!-- HTML格式的注释,在客户端查看源代码时可见 -->
<!-- 此注释由<%=programmer%>添加-->

如果programmer为hackiller,则在客户端返回的注释是<!-- 此注释由hackiller添加-->
(2)JSP注释
写在JSP代码中,但不发送到客户端。
<%-- JSP注释,该注释会在JSP编译时被忽略掉 --%>
<%-- /*Scriptlet中的多行注释*/ --%>
<%-- /**Scriptlet中的多行注释,可以用javadoc从java文件中提取出来*/ --%>
<%-- JSP的单行注释 --%>

 


2. 3个脚本元素
(1)声明(Declaration)全局变量
<%! int i=0; String str="Hello World!"; %>
(2)表达式(Expression)
在JSP代码中,经常使用表达式来输出变量的值,可以在任何地方
<%! int a=1; int b=2; String str="Hello World!"; %>
<%=a+b%>  <%=str>

PS:不能用“;”号来作为表达式的结束符。但同样的表达式在Scriptlet中必须以分号来结尾。
(3)脚本段(Scriptlet)
脚本段用来包含一个有效地Java程序段
<% int b=3; %>局部变量


3. 3个指令元素
(1)page指令
<%@ page contentType="text/html;charset=utf-8"%>
定义JSP文件的全局属性,属性包括:language、extends、import、session、buffer、autoflush、isThreadSafe、info、errorPage、isErrorPage、contentType(服务端到客户端的输出格式)
其位置可以在页面的任何位置,但推荐放在页首。
language:声明脚本语言的种类,目前只能用"java"。
extends:标明JSP编译时需要加入的Java Class的全名,它会限制JSP的编译能力,慎用!
import:需要导入的java包列表。
session:设定客户是否需要HTTP Session。默认为true。
buffer:buffer的大小被out对象用于处理执行后的JSP对客户浏览器的输出。默认值为8Kb。
autoFlush:设置如果buffer溢出,是否要强制输出,如果定义其为true(默认值),输出正常;如果定义为false,会导致一个意外错误的发生。
isThreadSafe:设置JSP文件是否能多线程使用。默认为true。
info:文本信息。能够使用Servlet.getServletInfo()方法取回。
errorPage:设置处理异常事件的JSP文件
sErrorPage:设置此页是否为处理异常事件的页面,如果设置为true,就能使用exception对象。
contentType:设置MIME类型和字符编码集。MIME类型默认为text/html,字符集默认为charset=ISO-8859-1。
可以在一个页面中使用多个<%@page %>指令,但是除了import属性,其他的属性只能使用一次。
JSP缺省引入的包,下面这些包在JSP编译时已经导入了,所以在JSP文件中无需再用page指令引入:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*

 

(2)include指令

<%@ include file = "相对路径" %>

 使用include指令可以在JSP中包含一个静态的文件,同时解析这个文件中JSP语句。
如果路径以“/”开头,那么此路径主要是参照jsp应用的上下文关系路径。
如果路径以文件名或文件目录开通,那么此路径就是正在使用的JSP文件的当前路径。

 

(3)taglib指令

<%@ taglib uri = "TagLibrary" prefix = "mypfx" %>

 是用taglib指令定义一个标签库及其自定义的前缀。
uri:Uniform Resource Identifier根据标签的前缀对自定义的标签进行唯一的命名,可以是一个相对或绝对的路径
prefix:自定义标签的前缀。不要使用jsp、jspx、java、javax、servlet、sun、sunw作为前缀,这些已被Sun公司声明保留。

 

4. 8个动作指令
(1)页面跳转:<jsp:forward>
<jsp:forward>标签从一个jsp文件向另外一个文件传递一个包含用户请求的request对象。
共包含2个属性
page属性是一个表达式或是一个字符串用于说明将要定向的文件或URL。
<jsp:param>向一个动态文件发送一个或多个参数。如果使用了<jsp:param>标签,目标文件必须是动态的文件(如Servlet或者JSP等)

<jsp:forward page=test.jsp>
 <jsp:param name="username" value="<%=user%>"/>
 <jsp:param name="password" value="12345678"/>
</jsp:forward>

 通过request.getParameter("username")获取用户名

(2)包含页面:<jsp:include>
<jsp:include>允许包含静态和动态Web资源,这两种包含的结果是不同的。
如果包含的仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,类似于<%@include%>;
如果包含的是动态web资源,那么这个被包含的文件也会被JSP编译器执行。
如果这个包含文件是动态的,那么还可以使用<jsp:param》传递参数和参数值。

(3)创建Bean:<jsp:useBean>
创建一个Bean实例并指定她的名字和作用范围。
<jsp:useBean id="beanInstanceName" scope="page|request|session|application" class="package.className"/>
包含5个属性。
id:在所定义的范围中确认Bean的变量,程序中用id来使用此Bean实例。id的值对大小写敏感。
scope:Bean存在的范围及id变量名的有效范围。默认值为page。
class:使用new关键字及class构造器从一个class中实例一个bean。这个class不能是抽象的,并且必须有一个公用的,没有参数的构造器。
type:如果这个Bean已经指定范围中存在,使用type将赋予这个Bean一个数据类型。如果使用type的同时没有使用class或beanName,Bean将不会被实例化。
beanName:beanName可以是字符串的package.class,也可以是jsp表达式,它的值会传递给Beans.instantiate方法。type的值可以与beanName相同也可以是它的基类,或者是它所实现的接口。

(4)设置Bean属性:<jsp:setProperty>
<jsp:setProperty name="beanInstanceName" property="*"|property="propertyName" value="string|<%=expression%>"|param="parameterName"/>
name:表示已经在<jsp:useBean>中创建的Bean实例的名字,即id。
property:匹配Bean中的属性
param:指request对象中的参数名,将对应的值设定给Bean的属性。
value:使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果是字符串,那么就会被转换成Bean属性的类型(如"0.98"会转化成double类型0.98)。如果是表达式,则要求它的类型与Bean属性的类型一致。
PS:在同一个<jsp:setProperty>中不能同时使用param属性和value属性

(5)取得Bean属性:<jsp:getProperty>
获取已经存在的Bean对象中的属性值,在页面中显示。
<jsp:getProperty name="beanInstanceName property="propertyName"/>
name:与存在的对象实例的名字相同。
property:对象中属性名


(6)使用Applet插件:<jsp:plugin>

<jsp:plugin type="applet" code="MeidaPlay.class" codebase="../classes">
 <jsp:parmas>
  <jsp:param name="way" value="Hall"/>
 </jsp:params>
 <jsp:fallback>
  <p>Unable to load applet!</p>
 </fallback>
</jsp:plugin>

使用<jsp:plugin>插入一个applet或Bean,必要的话还要下载一个Java插件用于执行它。


(7)定义参数:<jsp:param>
可以在<jsp:include>、<jsp:forward>、<jsp:plugin>中使用。

(8)插件错误提示:<jsp:fallback>
当<jsp:plugin>插件不能够正常显示时显示提示信息。

 

三、JSP内置对象
1. Request:请求对象
该对象封装了用户提交的信息,通过调用该对象相应方法可以获取封装的信息。
当request对象获取客户提交的汉字字符是,会出现乱码,必须进行特殊处理。
常用方法:
getParameter(String parameterName):获取表单提交的信息。
getProtocol():获取客户使用的协议。
getServletPath():获取客户提交信息的页面。
getMethod():获取客户提交信息的方式。
getHeader(String str):获取HTTP头文件中的accept、accept-encoding和Host的值。
getRermoteHost():获取客户的IP地址。
getServerName:获取服务器名称。
getServerPort:获取服务器的端口号。
getParameterNames():获取客户段提交的所有参数的名字。

 

2. Response:响应对象
对客户的请求做出动态的响应,向客户端发生数据。
(1)动态响应contentType属性
用page指令静态地设置页面的contentType属性,动态设置这个属性时使用response.setContextType("text/html;charset=utf-8");
(2)Response重定向
response.sendRedirect("index.jsp");

 

3. Session:会话对象
(1)什么是Session对象?
Session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
(2)Session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后服务器端改该客户的Session对象才取消,并且和客户的会话对应关系消失。
(3)常用方法
public String getId():获取Session对象的编号。
public void setAttribute(String str,Object obj):将参数对象添加到Session对象中。
public Object getAttribute():根据属性名获取在Session对象中的属性。
public boolean isNew():判断是否是一个新的客户。

 

4. Application:应用程序对象
(1)什么是Application对象?
在服务器启动后就产生了这个Application对象,当客户在所访问的网站的各个页面之间浏览时,这个Appliaction对象都是同一个,所有的客户共享这个内置的Application对象。
(2)常用方法
setAttribute(String key,Object obj):将参数对象添加到Application对象中。
getAttibute(String key):根据属性名获取Application对象中的属性

 

5. Out:输出对象
out对象是一个输出流,用来向客户输出数据。
out.print():输出各种类型数据。
out.newLine():输出一个换行符。
out.close():关闭流。

 

6. Config:配置对象
一般我们使用Config对象获取一些初始化配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

 

7.Page:页面对象
page对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。

 

8.PageContext:页面上下文对象
JSP引入的PageContext的类,通过它可以访问页面的许多属性。pageContext变量存储与当前页面相关联的PageContext对象的值。PageContext类拥有getRequest、getResponse、getOut、getSession等方法。

 

9.Exception:例外对象
exception对象代表了JSP文件运行时所产生的例外对象,此对象不能在一般的JSP文件中直接使用,而只能在使用了

<%@page isErrorPage="true"%>的JSP文件中使用。这是因为JSP文件运行时产生的错误对象被向外抛出,只能被使用了<%@page isErrorPage="true"%>标记从而具有拦截错误对象功能的JSP所拦截。最常用的方法就是getMessage,用来获取错误信息。

 

四、实例
登陆页面:index.jsp

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
 <head>
  <title>系统登录</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <link href="css/vbulletin.css" rel="stylesheet" type="text/css">
  <style type="text/css">
   .btn {
    font-family: "Tahoma", "宋体";
    font-size: 9pt;
    color: #001E3C;
    BORDER-BOTTOM: #6794BC 1px solid;
    BORDER-LEFT: #8BB8E0 1px solid;
    BORDER-RIGHT: #6794BC 1px solid;
    BORDER-TOP: #8BB8E0 1px solid;
    background-image: url(image/buttonbg.gif);
    CURSOR: hand;
    font-style: normal;
    padding-left: 3px;
    padding-right: 3px;
   }
  </style>  
  <script type="text/javascript">
   function doLogin(){
    var vform = document.loginform;
    if(!loginform.username.value){
     alert("请输入用户名!")
     return;
    }
     
    if(!loginform.password.value){
     alert("请输入密码!")
     return;
    }
   
    vform.submit();
    
   }
  </script>
 </head>
 <body topmargin="0" leftmargin="0" >
  <form action="receive.jsp" name="longinForm" method="post">
   <table width="100%" height="100%"> 
    <tr>
     <td align="center" valign="middle">
      <TABLE id="form1"    
       cellspacing="0" cellpadding="0" border="0" style="width: 500;">
       <CAPTION style="display: none">
       </CAPTION>
       <TR>
        <TD>
         <TABLE width="100%" height="100%" cellspacing="0" 
          cellpadding="0" border="0" style="table-layout: fixed">
          <TR>
           <TD valign="top">
            <FIELDSET id="form1_group0" style="width: 100%;">
             <LEGEND>系统登录</LEGEND>
             <DIV>
              <DIV  style="width: 100%; height: 100%">
               <TABLE  width="100%" cellspacing="0"
                cellpadding="4" border="0" style="table-layout: fixed;">
                <COLGROUP>
                 <COL width="100"></COL>
                 <COL width="50%"></COL>
                 <COL width="100"></COL>
                 <COL width="50%"></COL>
                </COLGROUP>
                <TR>
                 <TD  align="right">
                  用户名
                 </TD>
                 <TD class="InnerTableContentCell">
                  <input type="text" name="username"
                   style="width: 100%;">
                 </TD>
                 <TD  align="right">
                  密码
                 </TD>
                 <TD>
                  <input type="password" name="password"
                   style="width: 100%;" />
                  <input type="hidden" name="action2" value="0">
                 </TD>
                </TR>
                <TR>
                 <TD colSpan="4"
                  align="right">
                  <input type="button" name="login" value="登录" onclick="this.form.submit();"   class="btn"/>
                 </TD>
                </TR>
               </TABLE>
              </DIV>
             </DIV>
            </FIELDSET>
           </TD>
          </TR>
         </TABLE>
        </TD>
       </TR>
      </TABLE>
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>

 

接收数据页面:receive.jsp

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" info="动作标签"%>

<jsp:useBean id="userVo" class="exercise.vo.UserVo" scope="request">
  <jsp:setProperty name="userVo" property="name" param="username"/>
  <jsp:setProperty name="userVo" property="password" param="password"/>
</jsp:useBean>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" >
    <link href="css/vbulletin.css" rel="stylesheet" type="text/css">
  </head>
  
  <body> 
    This is my JSP page. <br>
    <hr>用&lt;jsp:getProperty&gt;获取表单中提交过来的值<br>
    name:<jsp:getProperty property="name" name="userVo"/><br>
    password:<jsp:getProperty property="password" name="userVo"/>
    <br><br><hr>
    <%
      out.println("从vo对象中直接获取:<br> name:"+userVo.getName()+
      "<br>password:"+userVo.getPassword()+"<br>");
      String serviceName = request.getServerName();//1.jsp内部的request对象
      out.println("<br><hr>服务器名: "+serviceName);
      out.println("<br>MIME类型: "+response.getContentType());//2.jsp内部的response对象
      session.setAttribute("sessionName","jsp内部的session对象");//3.jsp内部的session对象
      out.println("<br>session对象: "+session.getAttribute("sessionName"));//4.jsp内部的out对象
      pageContext.setAttribute("pageContext","上下文环境的引用");//5.jsp内部的pageContext对象
     //6. application
     //7. config   ServletConfig的实例
     //8. page   java.lang.Object的实例
     //9. exception  必须在page指令中isErrorPage=true的页面使用   java.lang.Throwable的一个实例
     String info = pageContext.getServletContext().getServerInfo();
     out.println("获取page指令中的info属性:"+info);
    %>
  </body>
</html>

 
 

分享到:
评论

相关推荐

    J2EE考试复习材料

    以下是J2EE考试复习材料的总结,涵盖了J2EE的基本概念、WEB容器、Session和Application、JavaBean、JSP、JDBC等方面的知识点。 一、Tomcat缺省端口 Tomcat是Apache软件基金会下属的一个开源的WEB服务器软件,常...

    j2ee复习资料

    ### j2ee复习资料知识点详解 #### 一、教学目标及考试形式 - **教学目标**:本课程旨在帮助学生全面复习J2EE相关的基础知识和技术要点,为即将到来的考试做充分准备。 - **考试形式**:考试总分为100分,其中笔试占...

    J2EE复习提纲

    ### J2EE复习提纲详解 #### 一、B/S与C/S架构的区别 ##### B/S(Browser/Server)架构特点: - **客户端简化**:客户端仅需浏览器即可,无需安装其他应用程序,使得部署和维护更为简单。 - **平台独立性**:由于...

    j2ee复习题

    Java 2 Platform, Enterprise Edition(J2EE)是Oracle公司推出的用于...总结,J2EE复习题集将涉及这些关键知识点,通过深入学习和实践,开发者能更好地理解J2EE架构,从而高效地开发出满足企业需求的高质量应用程序。

    J2EE期末复习资料

    3. J2EE Reference Implementation:提供了参考实现,开发者可以在此基础上开发自己的应用。 4. J2EE BluePrints:提供了最佳实践和设计模式,指导开发者按照J2EE的最佳方式来构建应用。 J2EE包含多种组件和服务...

    j2ee复习资料j2ee试卷

    【J2EE复习知识点】 1. **Java2平台版本**:Java2平台分为三个主要版本:J2SE(Java Standard Edition),J2EE(Java Enterprise Edition),和J2ME(Java Micro Edition)。J2EE是面向企业级应用开发的,提供了...

    J2EE认证考试复习资料

    J2EE认证考试通常包含多个部分,涵盖了J2EE体系结构、Servlet、JSP(JavaServer Pages)、EJB、JNDI(Java Naming and Directory Interface)、JMS、JTA以及Web服务等相关技术。在准备这样的考试时,考生需要深入...

    j2ee期末复习资料

    J2EE期末复习资料主要涵盖了Java企业级应用开发的基础知识,包括Servlet、JSP、HTTP协议、JavaBean、JDBC以及数据库查询等多个方面。以下是这些知识点的详细解释: 1. **JSP Page指令属性**: - `import`属性:在...

    j2ee复习资料,还有多选题

    **J2EE复习知识点概述** J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的框架。它提供了一系列的API和服务,支持多层架构,包括Web层、业务逻辑层(EJB)和数据访问...

    软件07级J2EE复习题

    【J2EE核心概念】 ...总结来说,这些复习题目涵盖了J2EE平台的基础概念,包括容器、组件、生命周期、Web应用体系、数据库访问接口(JDBC)以及软件设计模式等多个重要领域,是深入理解J2EE开发的关键知识点。

    J2EE复习题和答案完美版

    本文档提供了J2EE复习题和答案,涵盖了JSP、Servlet、JSTL等方面的知识点,供开发者学习和参考。 1. 在JSP中,要定义一个方法,需要用到以下()元素。 知识点:JSP脚本元素。JSP脚本元素有三种: declaration、...

    j2ee复习.zip

    J2EE的复习涵盖了许多关键知识点,包括API的使用、函数理解、JSP(Java Server Pages)技术以及各类框架的应用。 1. **J2EE API的使用** - **Servlet**:核心的服务器端编程接口,用于处理HTTP请求。Servlet生命...

    J2EE复习题 文件内容很值得看 也很适合考试

    这个压缩包文件“J2EE复习题答案.doc”显然是为了帮助学习者准备J2EE相关的考试或者进行自我测试而准备的。 J2EE 知识体系广泛,涵盖了许多核心技术,包括: 1. **Servlet**:Servlet 是 Java 编写的服务器端程序...

    J2EE复习题1

    这些知识点涵盖了Web开发中的MVC架构、Struts2框架配置、HTTP会话管理、HTML基础、Servlet与JSP交互、JavaScript的DOM操作以及Tomcat服务器的基本配置等方面的内容,对于理解和开发J2EE应用程序至关重要。

    doc\j2ee复习提纲(最新完整版).doc

    【J2EE复习提纲详解】 J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个重要组成部分,主要用于开发和部署企业级分布式应用程序。以下是对J2EE核心概念的详细解析: 1. **J2EE多层架构** - J2EE架构...

    J2EE复习题及答案.doc

    1. ODBC总体结构中不包括的组件是( D )。 A. 应用程序 B.驱动程序管理器 C....2. JSP没有的内置对象有( C ) A. request B. respone C. output D.session 3. MVC设计模式的核心组成有( ABC )

    合肥工业大学J2EE期末复习试题.pdf

    根据提供的信息,我们可以推断这份文档“合肥工业大学J2EE期末复习试题.pdf”主要围绕Java 2 Platform, Enterprise Edition(J2EE)的相关知识点进行展开。由于提供的部分内容并不包含具体的题目或知识点,我们将...

    面试 j2ee jsp 代码与编程题.rar

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级Web应用程序的框架,而JSP(JavaServer Pages)是其核心组件之一,用于开发动态网页。面试时,对于J2EE和JSP的了解程度往往是评估候选...

    J2EE复习资料(可缩印)1

    【J2EE复习资料(可缩印)1】 J2EE(Java 2 Platform, Enterprise Edition)是一个由Oracle公司主导的Java平台,主要用于构建和部署分布式、基于组件的企业级应用程序。它提供了一个全面的框架,涵盖了从客户端到...

    J2EE复习冲刺精简版1

    J2EE复习冲刺精简版1主要涵盖了Spring MVC和Struts框架的相关知识,这两个都是Java企业级开发中常用的MVC(Model-View-Controller)架构模式实现。以下是这些知识点的详细说明: **Spring MVC** Spring MVC是Spring...

Global site tag (gtag.js) - Google Analytics