JSP的一些笔记

•JSP脚本:可以包含任何可执行的Java代码。Java代码可通过JSP脚本嵌入html页面。
  格式:<% java代码 %>
eg:
  <body>
    <h3>计算学生的平均成绩:</h3>    <br>  
    <%
    double math=90.0, chinese=85, english=72, average;
      average=(math+chinese+english)/3;
      out.print(average);
   %>  
  </body>

 

•JSP表达式:提供了一种输出表达式值的简单方法,语法格式如<%=java表达式%>。
eg:
<body>
	<%double r=10.0; %>
	<%=3.14*r*r %>
</body>

 

 
•JSP声明用于声明变量和方法。声明时不需要定义类。
  格式:<%! 变量和方法声明 %>
JSP声明变量代码片段:
<%! 
	String  name="liu";
	int  i=0;
%>

JSP声明方式还可以定义一个方法,定义方法格式如下:
<%!
	返回值数据类型 函数名(数据类型  参数, …) {
		语句;
		return (返回值);
	}
%>
 
 
 
•JSP注释用于标注在程序开发过程中开发提示,不会输出到客户端。
 
  1 输出注释

    输出注释的语法规则如下:

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

    这种注释和HTML文件中的注释很相似,唯一不同的是,前者可以在这个注释中用表达式,以便动态生成不同内容的注释。这些注释的内容在客户端是可见的,即能够返回到客户端html文件中。如下面一段注释:

  <!-- 现在时间是:<%=(new java.util.Date()).toLocaleString() %> -->

  2. 隐藏注释

    隐藏注释的语法规则如下:

    <%-- 注释内容--%>

    隐藏注释与输出注释不同的是,这个注释虽然写在JSP程序中,但是不会发送给用户,即在返回到客户端html的文件中不可见

 

JSP中的三个编译指令:

  格式:<%@ 指令名称 属性1="属性值1" 属性2="属性值2" … 属性n="属性值n"%>

  •JSP的编译指令是通知JSP引擎的消息,它不是直接生成输出。
  •编译指令都有默认值,因此开发人员无须为每个指令设置值。
    –page:该指令定义当前页面的属性
page指令用于设置JSP界面的属性,有以下的属性可以指定:language,import,isErrorPage,errorPage,buffer
  
<%@ page language = "Java" import ="java.util.*" buffer = "8kb" 
errorPage="error.jsp" isErrorPage="false"%>
<%@ page
    [ language="java" ]
  [ extends="package.class" ]
  [ import="{package.class | package.*}, ..." ]
  [ session="true | false" ]
  [ buffer="none | 8kb | sizekb" ]
  [ autoFlush="true | false" ]
  [ isThreadSafe="true | false" ]
  [ info="text" ]
  [ errorPage="relativeURL" ]
  [ contentType=“mimeType [ ;charset=characterSet ]” | “text/html ”]
  [ isErrorPage="true | false" ]
%>
    –include:用于指定包含另一个页面
include 指令用于在运行时将 HTML文件或 JSP页面嵌入到另一个 JSP页面
    格式:<%@ include file="" %>
include既可以包含静态文件,也可以包含jsp页面。会将包含的页面加入页面,融合成一个页面。因此,被包含的页面不需要是一个完整的页面。
    –taglib:用于定义和访问自定义标签
taglib 指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀。从而,利用标签前缀去使用标签库表述文件中的标签。
    格式:<%@ taglib uri=“tagLibraryURI” prefix=“tagPrefix” %>
      其中,uri=“tagLibraryURI”指明标签库文件存放位置。prefix="tagPrefix"则表示该标签使用时的前缀。JSP页面在根目录中搜索tagLibraryURI 标签库描述符文件,而tagPrefix前缀将mytaglib中的标签嵌入JSP页面.
 
 
 
JSP中的7个动作指令:
  动作指令是运行时的脚本动作,通常可替换为JSP脚本;
  JSP的7个动作指令:
    –jsp:forward
jsp:forward执行页面转向,将请求的处理交给下一个页面
<jsp:forward>的语法规则如下:

<jsp:forward page=" { relativeurl  | <%= expression %> } " />

或者为:

<jsp:forward page=" { relativeurl  | <%= expression %> } " >

<jsp:param name="paramName" value="{ paramValue | <%= expression %>}" />

</jsp:forward>

<jsp:forward>标记只有一个属性page。page属性指定要转发资源的相对URL。page的值既可以直接给出,也可以在请求时动态计算。

    –jsp:include
jsp:include  将静态的HTML、服务器程序的输出结果及来自其他JSP的输出结果包括到当前页面中。
–也可以在标签内向引用页面传递param
    
<jsp:include page=" { relativeurl  | <%= expression %> } " flush="true" />
或者为:
<jsp:include page=" { relativeurl  | <%= expression %> } " flush="true" >
    <jsp:param name="paramName" value="{ paramValue | <%= expression %>}" />
</jsp:include>
l包含普通的HTML文件:<jsp:include page=" hello.html " />
l使用相对路径:<jsp:include page=" /index.html " />
l包含动态JSP文件:<jsp:include page=" scripts/login.jsp " />
l向被包含的程序传递参数:

<jsp:include page=" scripts/login.jsp " >

     <jsp:param name="usename" value="zheng" />

 </jsp:include>

    –jsp:param(jsp:param 用于传递参数,必须与其他支持参数的标签一起使用)
      
<jsp:param>的语法规则如下:

<jsp:param name="paramName" value="paramValue"/>

例如:

<jsp:param name= "username" value ="liu"/>

<jsp:param>通常与<jsp:include>、<jsp:forward>或<jsp:plugin>等一起使用。在独立于其他操作使用时,<jsp:param>动作没有作用。

    –jsp:useBean
jsp:useBean创建一个JavaBean实例
–<jsp:useBean id="name" class="classname" scope="page | request | session | application" />
 
–id:设置JavaBean的名称,利用此id,可以识别在同一个JSP程序中使用不同的JavaBean组件实例。
–class:指定JavaBean对应的Java类名,查找该JavaBean路径。
–scope属性值:
page:仅在本页面有效
request:仅本次请求有效
session:在本次session有效
application:在本应用内一直有效
 
useBean可与setProperty,getProperty一起使用
eg:
java文件:

public class simpleBean

{

    private String name = null;

    private int age = 0;

    public simpleBean()

    {

    }

    public String getName()

    {

        return name;

    }

    public void setName(String username)

    {

        name = username;

    }

}

jsp:

<html> 

    <head>

        <title> 在 JSP 中使用 JavaBean </title>

        <jsp:useBean id="BeanId" class=“simpleBean" scope="application"/>

        <jsp:setProperty  name="BeanId" property="name"  value="Andrew"/>

        <jsp:setProperty name="BeanId" property="age"   value="25"/>

    </head>

    <body>

        姓名:<jsp:getProperty name="BeanId"   property="name"/> <br/>

        年龄:<jsp:getProperty name="BeanId"   property="age"/>

    </body>

</html>

    –jsp:setProperty(设置javaBean实例的属性值,用法见上面的例子)
    –jsp:getProperty(获取javaBean实例的属性值,用法见上面的例子)
    –jsp:plugin(jsp:plugin用于下载JavaBean或Applet到客户端执行,目前很少用。)
 
 
 
JSP中9个内置对象:
javax.servlet.http:HttpServletRequest的实例,该对象封装了一次请求,客户端请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参数使用该对象。
  
  输入输出对象:request,response,out;
  作用域对象:pageContext,application,session
  Servlet对象:page,config;
  错误对象:exception
 
1.输入输出对象:
  控制页面的输入和输出
  访问与所有请求和响应有关的数据
  输入和输出对象包括request、response 和out
 
2.request对象:
  用来表示并存储客户端对服务器的请求,使用http协议。
      javax.servlet.http:HttpServletRequest的实例,该对象封装了一次请求,客户端请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参数使用该对象。
  常用方法:
  •getParameter(String paramNarne)
  •getParameterValues(String paramName)
  •setAttribute(String atttibuteName, Object attributeValue)
  •getAttribute(String attributeName)
  •setCharacterEncoding(String env)
 
  

request其他主要的方法:

  getCookies():返回客户端的Cookie对象,结果是一个Cookie数组。
  getHeader(String name):获得HTTP协议定义的传送文件头信息,例如,request.getHeader(“User-Agent”)含义为:返回客户端浏览器版本号、类型。
  getServerPort():获得服务器的端口号。
  getServerName():获得服务器的名称。
  getRemoteAddr():获得客户端的IP地址。
  getRemoteHost():获得客户端的主机名,如果该方法失败,则返回客户端的IP地址。
  getProtocol():获得客户端向服务器端传送数据所依据的协议名称。
  lgetMethod():获得客户端向服务器端传送数据的方法。
  getServletPath():获得客户端所请求的脚本文件的文件路径。
  getCharacterEncoding ():获得请求中的字符编码方式。
  getSession(Boolean create):返回和当前客户端请求相关联的HttpSession对象。
  getQuertString():返回查询字符串,该字符串由客户端以get方法向服务器端传送。
  getRequestURI():获得发出请求字符串的客户端地址。
  lgetContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,则返回-1。
 
3.response对象:
  处理jsp生成的响应,并将响应发送给客户端,实现javax.servlet.http.HttpServletResponse接口,可对客户的请求做出动态的响应,向客户端发送数据,如Cookies、HTTP文件的头信息等。通常response对象常用于重定向,而输出响应使用out 对象。
  常用方法:void sendRedirect(String str)
 

response对象其他主要方法:

  addHeader(String name,String value):添加HTTP头文件,该头文件将会传到客户端去,如果有同名的头文件存在,那么原来的头文件会被覆盖。
  setHeader(String name,String value):设定指定名字的HTTP文件头的值,如果该值存在,那么它将会被新的值覆盖。
  containsHeader(String name):判断指定名字的HTTP文件头是否存在,并返回布尔值。
  flushBuffer():强制将当前缓冲区的内容发送到客户端。
  addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。
 
4.out对象
  表示输出流, 通常用于在页面上输出变量值和常量
  在使用输出表达式的地方,可通过out对象达到同样的效果
  javax.servlet.jsp.JspWriter类的实例
  使用write()、print()和println()方法
 
 
内置对象的作用域包括page、request、session和application
作用域通信对象包括session、application 和pageContext
5.session对象
  
  该对象代表一次会话。从客户端浏览器与站点建立连接起,开始会话,直到关闭浏览器时结束会话。
  javax.servlet.http.HttpSession接口的实例,session中存储有关用户会话的所有信息。
  
session对象最常用的方法有:
–void setAttribute(String name, Object value)
–以键/值的方式,将一个对象的值存放到session 中
–void getAttribute(String name)
–根据名称去获取session中存放对象的值
 

session对象其他方法如下:

  getAttributeNames():返回session对象存储的每一个属性对象,结果集是一个Enumeration类的实例。
  getCreationTime():返回session对象被创建的时间,单位为毫秒。
  getId():返回session对象在服务器端的编号。
  getLastAccessedTime():返回当前session对象最后一次被操作的时间,单位为毫秒。
  getMaxInactiveInterval ():获取sessionn对象的生存时间,单位为秒。
  setMaxInactiveInterval (int interval):设置session对象的有效时间(超时时间),单位为秒。在网站的实际应用中,30分钟的有效时间对某些网站来说有些太短,但对有些网站来说又有些太长。
  removeAttribute(String name):删除指定属性的属性名和属性值。
    invalidate():注销当前的session对象。
 
servlet
1.简介
  •Servlet在本质上就是Java类,编写Servlet需要遵循Java的基本语法。
  •但是与一般Java类不同的是,Servlet是只能运行在服务器端的Java类,必需遵循特殊的规范,在运行的过程中有自己的生命周期
  •Servlet是和HTTP协议是紧密联系的,所以使用Servlet几乎可以处理HTTP协议各个方面的内容。
 
2.servlet工作原理 
  •Servlet容器是Web服务器或应用程序服务器的一部分,主要任务是管理servlet的生命周期;web服务器,它是来管理和部署 web应用的。
  •Servlet是运行在服务器端的程序,Servlet容器负责把请求传递给Servlet,并把结果返回给客户,维护Servlet的运行状态
  •Servlet容器负责处理servlet的并发访问,当多个用户请求同一个Servlet,Servlet容器负责为每个用户启动一个线程,这些线程的运行和销毁由Servlet容器负责
 
3.servlet生命周期
  • l初始化:当某Servlet被第一次请求时,Servlet引擎调用init()方法初始化这个Servlet
  • l提供服务:当Servlet对象被创建后,调用service()方法为用户提供服务
  • l销毁:调用Servlet的destroy()方法把内存中Servlet对象销毁
 
4.servlet开发配置
  •两个基本Java Servlet 开发包:javax.servlet和javax.servlet.http
  –javax.servlet提供了用来控制Servlet生命周期所需的类和接口,是编写Servlet必需要实现的。
  –javax.servlet.http提供了处理与HTTP相关操作的类和接口
 
  •编写一个Servlet必需直接或间接实现Servlet接口
  –实际开发中,继承 javax.servlet.http.HttpServlet或者javax.servlet.GenericServlet
 
(待续)
posted @ 2015-03-22 15:48  zhouQing  阅读(176)  评论(0编辑  收藏  举报