Java学习大全 之 JSP

 

1、jsp(Java Server Pages)是由Sun公司倡导、许多公司一起建立的一种动态网页技术的标准。事实上是由servlet发展而来的。
2、工作原理:Servlet容器会在第一次调用jsp页面时候自动编译它,通过编译后的类来给客户端响应。
3、jsp文件中的元素总结为5类:注释、模板元素、脚本元素、指令元素、动作元素。
4、注释
 一、客户端注释:<!--<%=expression%>-->会jsp编译器编译。
 二、隐藏注释:<%--隐藏注释--%>:不会被jsp编译器编译,在class文件中和客户端都不会出现
 三、脚本中的注释: //单行注释 和 /** */多行注释。
5、模板元素:指的是html元素或者xml元素,可以说是网页的框架。在jsp文件里可以使用。
6、脚本元素:包括声明、表达式、脚本
 一、声明全局变量或者方法:<%!String name%>、<%!String getDate(){return new Date().toLocaleString();}%>
 二、表达式:<%=表达式%>例如<%="str"%>、<%=var%>
 三、脚本:<% java代码 %>
7、指令元素:包括page、include、taglib,格式为<%@ 指令 属性="属性值"%>
 一、page有很多属性:language、import、contentType、session、buffer、autoFlush、isThreaadSafe、info、errorPage、isErrorPage、extends、isELIgnored、pageEncoding
  language:定义使用脚本的语言。目前是java语言。language="java"
  import:总是放在jsp文件顶部。import="java.util.*,java.io.*"
  session:指定一个http会话中这个页面是否参与,默认为session="true"
  buffer:指定到客户端输出流缓存模式,如果为none则不缓冲,也可以指定缓存冲大小。与autoFlush一起用。默认值根据不同服务器而定。buffer="128k"
  autoFlush:缓冲区满时是否刷新。默认为true。
  info:关于jsp页面信息,也可以由servlet.getServletInfo()获得。
  isErrorPage:表示当前页面是否作为errorPage目标。默认是false,如果为true则可以使用exception对象,用来输出一些异常信息。
  errorPage:定义当前页面出异常时候调到哪个页面。errorPage="error.jsp"
  isThreadSafe:用来设置jsp文件是否能多线程使用。默认为true。如果为false则该jsp文件只能一次处理一个请求。
  contentType:定义页面响应的mime类型和jsp字符编码。contentType="text/html;charset=gb2312"
  pageEncoding:指定jsp页面字符编码。pageEncoding="utf-8"
 二、include有属性file,如<%@ include file="head.html" %>
  file:要包含的文件。file="filename"在jsp被编译之前就合并起来。之后才编译。
 三、taglib有属性uri、prefix。<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prifix="c" %>
  uri:表示标签描述符,告诉容器怎么找到标签描述文件和标签库。
  prefix:表示使用标签的前缀。如:prefix="c"
8、动作元素
 <jsp:param>:为其他标签提供附加信息如<jsp:forward><jsp:plugin>,用法<jsp:param name="paramName" value="paramValue"/>
 <jsp:include page="包含页面" flush="true">:允许在请求时间内现成的jsp页面包含静态或则动态资源.效率比<%@ include file="filename" %>低
  index.jsp
  <%@ page contentType="test/html;charset=gb2312" language="java" %>
  <html>页面
   <head><title>动态和静态包含</title></head>
   <body>
    <%@ include file="static.html" %>
    <hr/>
    <!--动态包含test.jsp文件,可以把参数传送过去-->
    <jsp:include page="test.jsp" flush="true'>
     <jsp:param name="var1" value="<%=request.getParameter("name")%>"/>
     <jsp:param name="var2" value="<%=request.getParameter("password")%>"/>
    </jsp:include>
   </body>
  </html>

  static.html页面
  <h3>静态包含进来的文件内容</h3>

  test.jsp页面

  <h3>动态包含进来的文件内容</h3>
  <br/>
  this is name=<%=request.getParameter("name")%>
  <br/>
  this is name=<%=request.getParameter("password")%>
  
 <jsp:forward>:请求转向到另一个jsp、servlet或则静态文件。
  用法<jsp:forward page="uri"/>或则<jsp:forward><jsp:param name="paramName" value="paramValue"/></jsp:forward>
 <jsp:setProperty>:用来设置bean的属性。
  例如<jsp:setProperty name="beanName" property="name" value="hello"/>表示给id为beanName的bean的属性name赋值为hello
  例如<jsp:setProperty name="beanName" property="*" />表示给id为beanName的bean所有属性赋值。根据表单传送过来的参数来赋值。(表单的参数名字要和bean属性名一致)
 <jsp:getProperty>:用来获得bean的属性值。
  例如<jsp:getProperty name="beanName" property="name" />获得id为beanName的bean的name属性值
 <jsp:useBean>:用来创建一个bean实例并指定它的名字及其作用范围。范围scope有:request、page、session、application
  例如<jsp:useBean id="user" scope="page" class="bean.User"/>创建了一个User实例
  例如创建一个bean并且给bean属性赋值
   <jsp:useBean id="user" scope="page" class="bean.User">
    <jsp:setProperty name="user" property="username" value="joe"/>
    <jsp:setProperty name="user" property="password" value="222"/>
   </jsp:useBean>
 <jsp:plugin>:用来产生客户端浏览器的特别标签,可以插入Applet或则JavaBean
  <jsp:plugin
   type="bean|applet"
   code="classFileName"
   codebase="classFileDirectoryName"
   [name="instanceName"]
   [archive="URIToArchive,..."]
   [align="bottom|top|middle|right"]
   [height="displayPixels"]
   [width="displayPixels"]
   [hspace="leftRightPixels"]
   [vspace="topBottomPixels"]
   [jreversion="JREVersionNumber|1.1"]
   [nspluginurl="URLToPlugin"]
   [iepluginurl="URLToPlugin"]
   [<jsp:params>[<jsp:param name="paramName" value="paramValue"/>]+</jsp:params>]
   [<jsp:fallback>message for user</jsp:fallback>]
  ></jsp:plugin>
  例如
  <jsp:plugin type="applet" code="com.myApplet.class" codebase=".">
   <jsp:params>
    <jsp:param name="var1" value="varValue1"/>
   </jsp:params>
   <jsp:fallback>cannot load the applet</jsp:fallback>
  </jsp:plugin>
 <jsp:fallback>只能在<jsp:plugin>使用

9、jsp内置对象:request、response、pageContext、session、application、out、config、page、exception
 一、request:客户端的请求。
 二、response:给客户端的响应。
 三、pageContext:值jsp的上下文,被封装程java.servlet.jsp.pageContext接口,管理属于jsp中特殊可见部分中已命名对象访问。
  forward(java.lang.String path)重定向到另外一个页面或则servlet
  getAttribute(String name)
  getException()返回当前的exception对象
  getRequest()返回当前的request对象
  getResponse()返回当前的response对象
  getServletConfig()返回当前页面的ServletConfig对象
  getServletContext()返回ServletContext对象。对所有页面都是共享的。
  getSession()返回当前的session
  setAttribute(String name, Object value)增加或则修改属性
  removeAttribute(String name)移除指定属性
 四、session:指的是当前会话对象
 五、applicatoin:web应用对象,在servlet环境通过getServletConfig().getContext()获得
  getInitParameter(String name)返回名字为name属性初始值
  getServletInfo()返回Servlet编译器的当前版本信息
 六、out:输出流对象,可以打印基本类型和对象类型
  out.flush()输出缓冲区里面的数据。即是刷新
  out.close()关闭输出流
  out.clear()清空清空缓冲区里面的数据,但是不会把数据输出到客户端。
  out.clearBuffer()清空清空缓冲区里面的数据,并把数据输出到客户端。
  out.getBufferSize()获得缓冲区的大小
  out.getRemaining()获得缓冲区中没有被占用的空间大小
  out.isAutoFlush()返回布尔值,如果是自动刷新返回true,否则返回false
 七、config:页面的ServletConfig对象
  getServletContext()返回servlet的上下文
  getServletName()返回servlet的名字
  getInitParameter(String name)返回初始化参数名为name的值
  getInitparameterNames()返回jsp所有的初始化参数名
 八、page:指的是本页面
 九、exception:没有被throwable捕获的错误传向了errorpage的uri
  例如<%=exception.getMessage()%>打印异常信息(需要在标有isErrorPage="true"?才能被别的页面传来exception信息)

10、表达式:语法${expression}
 运算符
  算术运算符:+、-、*、/、%、mod、dive
  逻辑运算符:and、&&、or、||、not
  关系运算符:==、eq、!=、ne、<、lt、>、gt、<=、ge、>=、le
  空 空操作符是前缀操作,可用于确定值是否为空。
  条件运算符:A?B:C
 优先级
  [].
  ()
  not、!、empty
  *、/、div、%、mod
  +、-
  <、>、<=、>=、lt、gt、le、ge
  ==、!=、eq、ne
  &&、and
  ||、or
  ?: 
 
11、jstl(JavaServer Pages Standard Tag Library)标准标签库
 引用jstl标签库<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

12、JavaBean使用

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值