`
wwei616
  • 浏览: 9269 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsp基本语法(指令,属性,内置对象)

    博客分类:
  • JSP
阅读更多
JSP基础语法
1 注释:
  显式注释:HTML注释会被发送到客户端,客户可以通过查看页面源代码发现这些注释。基本形式:<!--注释-->
  隐式注释:JAVA注释不会被发送到客户端。
  基本形式:<%--
    JSP中注释
     --%>
  或<%
      //java单行注释

             /*
        java多行注释
                    */
    %>

基本表达式:
声明语句:<%!声明语句;%>例<%! int i =10;%>此处声明全局变量,类,方法,全局变量只实例化一次,此处很少声明类或方法。(结尾有分号)
表达式:<%=java表达式%>,主要用于输出值,类似与:out.println().HTML与java代码相分离(结尾无分号)
脚本代码(Scriptlet):<% java代码;%>在此处声明的变量属于局部变量。(结尾有分号)
所有的JSP代码最终都是拼凑出来的,不是固定的,是由WEB容器拼凑出来的。

指令:
page指令:主要用来指明当前JSP页面的属性。
主要功能:
1 利用import语句导入类<%@page import="java.util.*,java.sql,*"%>
2 JSP出错处理<%@page errorPage="error.jsp"%>
3 指明出错页<%@page isErrorPage="ture"%>
4 使用的编程语言:<%@page language="java"%>
5 session管理:<%@page session="true"%>
6缓冲设置处理:<%@page isAutoFlush="true"%>  <%@page buffer=8kb%>
7设定页面MIME类型:<%@page contentType="text/html;charset=gb2312"%>//为JSP页面指定编码,只能设置一次,主要解决中文乱码问题。

包含语句:
1 <%@include file="uri"%>例<%@include file="hello.jsp"%>   <%@include file="hello.htm"%>
如有一代码要在多个JSP网页文件中实现,则可以单独建一个文件,再在所需的JSP页面中包含进来。可以包含任意文件不区分文件名称后缀,只是把文件中的内容包含进来。
注意:include语句可以包含任何内容,但是在一个JSP页面中,只能有一组<html>,<head>,<body>所以被包含的文件,只写显示部分的HTML代码,主体代码不要出现。
2 <jsp:include page="uri"/>例<jsp:include page="uri" flush="true"/>
                          或者<jsp:include page="uri" flush="true>
                              <jsp: param name="参数名称" value="值"/>
                              </jsp:include>
  此语句叫标签指令形式。代码,必须完结</xxx:xxx>,使用此语句可以向被包含的页面之中传递参数,如果传递参数,则被包含的页面必须是JSP页面,必须是动态页面。

两种include的区别:
<%@include file="uri"%>:(先包含后处理)
静态的包含页面:不管其他文件内容如何,只是将页面中的内容包含进来。
执行时:先将所有内容包含进来再一起处理,在将处理后的结果发送给客户端。
<jsp:include page="uri"/>:(先处理后包含)
动态包含页面:能自动区分所包含的是静态页面还是动态页面。
执行时:如果资源为静态资源则直接将资源包含处理与<%@include file="uri"%>相同,如果资源为动态,则先各自处理资源,之后将处理的结果包含在一起发送给客户端。


跳转语句:<jsp:forward page="uri"/>
         例<jsp:forward page="uri"/>
        或者<jsp:forward page="uri">
            <jsp:param name="参数名称" value="值"/>
            </jsp:forward>
此语句属于标签指令形式,标签指令形式的代码,必须写在Scriptlet(<%...%>)之外。
使用此跳转语句,页面的内容是已经跳转,但是地址栏没有任何变化,则意味着:用户的请求依然没有改变。所以此跳转属于服务器端跳转,是无条件跳转。

JSP内置对象
JSP使用java语言进行编程,java是一门面向对象的语言,除几个简单数据类型外,其余均为对象,
在JSP中存在几个内置对象,这些对象可以不经过显式声明直接引用,也不需要专门的代码创建其实例,在程序中可以直接使用这些对象。Web Container:Web容器------为对象实例化。

内置对象                  类型                                作用域
request      javax.servlet.http.HttpservletRequest            request
response     javax.servlet.http.HttpServletResponse           page
pageContext  javax.servlet.jsp.pageContext                    page
session      javax.servlet.http.HttpSession                   session
application  javax.servlet.ServletContext                     application
out          javax.servlet.jsp.JspWriter                      page
config       javax.servlet.ServletConfig                      page
page         java.lang.Object                                 page
exception    java.lang.Throwable                              page

request-->HttpServletRequest接口的实例化对象。
观察得出:HttpServletRequest有一个父类:ServletRequest
现在的ServletRequest只有HttpServletRequest一个子接口,目的是为以后更新出的协议服务。

JSP内置对象分类:
与Servlet有关的隐含对象:page,config。
与Input/Output有关的隐含对象:out,request,response.
JSP执行时,提供有关Context的隐含对象;session,application,pageContext
与Error有关的隐含对象:exception。

JSP中属性的保存范围
在JSP中设置属性:public abstract void setAttribute(java.lang.String name,java.lang,Object attribute)
取得属性:public abstract java.lang.Object getAttribute(java.lang.String name)
以上两个方法的参数必须记住。
四种属性保存范围:
1 在一个页面范围内:page
2 在一次服务器范围内:request
3 在一次会话范围内:session
4 在一个应用服务器范围内:application

page范围:在JSP中设置一个页的属性范围,必须通过pageContext完成。属性值只能在当前页取得,如使用<jsp:forward/>服务器端跳转无法取得。
pageContext属性范围:是最为重要的JSP属性之一,但是如果要使用纯粹的JSP代码开发,则此属性显现不出用处。
<%
pageContext.setAttribute("name","LE")
String name=(String)pageContext.getAttribute("name);//在当前页可以取得
%>

request范围:将属性保存在一次请求范围之内,必须使用服务器端跳转<jsp:forward/>,如果是通过客户端跳转和超链接等则无法取得。应用点:MUC设计模式,Struts,Webwork等。

session范围:只保留一个用户的信息。只要设置上去,则不管是什么跳转,都可以取得属性,与session有关的任何打开的页面都可以取得session,主要功能:用于验证用户是否登陆。

application范围:所有用户都可以取得此信息,此信息在整个服务器上被保留,只要设置一次,则所有网页窗口都可以取得数据。主要应用:在线人员统计,在线人员名单。

application,session,request-->都需要跨多个页,属性保存是有内存开销的,所以如果能用request就不要使用session,能使用session就不要使用application。

重要概念:pageContext--->默认情况下表示一个页面的保存范围。
public abstract void setAttribute(String name,Object value,int scope)
实际上,四种属性范围,都是通过pageContext对象来完成的:
public static final int APPLICATION_SCOPE
public static final int SESSION_SCOPE
public static final int REQUEST_SCOPE
public static final int PAGE_SCOPE
总结:四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session,request范围最多。

request对象
  request对象的主要功能是服务器端接收客户端以HTTP方式传送给用户端数据,以便对其进行进一步处理,实现交互设计功能。
常用的方法:getParameter(),getParameterValues(),getParameterNames();
request实际上是服务器端接收客户端请求的信息的,接收信息后做进一步处理。

接收参数是中文的处理:
1 对所有的数据进行再编码:ISO8859-1编码,使用String 类中的getBytes("ISO8859-1")
该方法定义:public byte[] getBytes("encoding");
  new String(request.getParameter("name").getBytes("ISO8859-1"));
2 设置统一的请求字符编码:public void setCharacterEncoding(String encoding)throws UnsupportedEncodingException
  request.setCharacterEncoding("GBK");在接收参数。

如果传递的内容是数组(复选框、多个下拉列表项),使用request的以下方法取得数据:
public String[] getParameterValues(String name)
把一组参数保存到一个数组中。

在开发中较为常用的表单控件:隐藏域。将内容隐藏起来,使用户不能修改,之后随表单一起提交的服务器上显示。

地址重写:http://localhost/test/demo01.jsp?name=hello,地址栏传递参数
通过地址重写,可以将内容传递到服务器端---服务器端只认HTTP协议,而不管接收的内容是以何种形式传过来的。

public Enumeration getParameterNames()  功能:取得客户端所有请求的参数名称(注意不是值)。
取得客户端IP地址的方法:public String getRemoteAddr()

总结:只要是客户端信息,在服务器端都可以通过request对象取得。

response对象
response对象的主要功能是服务器端用于向客户端发送信息,例如HTTP的头信息和Cookie信息。
所属接口:javax.servlet.http.HttpServletResponse该接口有一个父接口ServletResponse.
response的主要功能:
1 设置头信息:
  最有用的一个头信息:refresh:刷新。response.setHeader("头信息内容","头信息参数")
  response.setHeader("refresh","1") 每过一秒钟刷新一次。
  response.setHeader("refresh","2;URL=页面名称"),过两秒后跳转到URL页面上。
  setHeader可以实现跳转。
2 response进行跳转---重定向:response.sendRedirect(跳转路径);
  此语句执行后,页面地址也变为跳转后的地址,属于客户端跳转。

两种跳转的区别。
<jsp:forward page=""/>
  地址栏不改变跳转---服务器端跳转
  执行到跳转语句后无条件立刻跳转---之后的代码不在执行
  注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源
  使用forward时,request设置的属性依然能保留在下一个页面(setAttribute)
  通过<jsp:param name="" value=""/>传递参数。
response.sendRedirect("地址")
  地址栏改变跳转----客户端跳转
  所有代码执行完毕之后再跳转
  不能保存request属性--地址改变了,客户端跳转。
  通过URL地址重写传递参数

使用客户端跳转,可以通过重写URL的方式将内容传递过去。
例:response.sendRedirect("responseDemo01.jsp?id=mldn")

3 设置Cookie
  Cookie是服务器端保存客户端的一组资源。例登陆时会问你是否记住密码,或多长时间不用登陆,这些功能都是通过Cookie来实现的。
  Cookie是通过服务器端设置到客户端上去的----response   public void addCookie(Cookie cookie).
  如果要在在服务器端取得Cookie-----request  public Cookie[] getCookies()

在使用request对象取得全部Cookie时,会出现以下信息:JSESSIONID
JESSIONID表示一个客户端在服务器端的唯一一个标识编号(自动获得SESSION对象)

默认情况下,Cookie只针对当前浏览器有效,如果需要Cookie长留在本地计算机上,可以设置Cookie的保存时间。通过Cookie对象的setMaxAge()设置最大保留时间。

Cookie是保存在客户端上的信息,安全性较差,不要把过多的隐秘信息保留在Cookie中,这样很不安全。
服务器端在客户端第一次访问之后,会设置一个默认的Cookie在客户端上:JSESSIONID.

session对象
session对象主要用于保存用户的各种信息,直到它的生命周期(一般为900s)超时或被人为释放掉为止。可以通过session对象来判断此用户是否合法用户。
1 譬如,如果用户没有登陆,则无论此用户访问了哪几个页面都会跳转回登陆页。
2 购物车---->张三买的东西,不能放到李四的购物车上。
在服务器上,通过session来区分每一个上网用户

session对象属于javax.servlet.http.HttpSession接口的实例化对象。
session属于Http协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系。
用户只要一连接到服务器上,则立刻分配一个session给用户。

session的主要方法:
1 服务器上通过session来分别不同的用户---->session ID:任何连到服务器上的用户,服务器都会为之分配唯一的一个不会重复的session ID.
session ID是由服务器统一管理的,人为不能控制。
方法:session.getId() 取得sessionId ,长度为:32
2 判断是否是一个新的session
  public boolean isNew()判断当前的session是否是新建立的session。
3 session的属性设置
  设置属性:public void setAttribute(String name,Object value)
  取得属性:public Object getAttribute(String name)
  删除属性:public void removeAttribute(String name)

  通过session能够对用户是否登陆做出验证。

  注意,有以下方法,与上面三个方法相对应:
     public void putValue(String name,Object value)
     public Object getValue(String name)
     public void removeValue(String name)
  此三个方法已过时,不建议大家使用。

4 用户注销:让用户的session失效,如果session失效,则在session所保留的全部操作也会消失.
  public void invalidate():使session失效(手工)
  如果session长时间不被使用,也会自动失效。
5 得到session的创建时间:public long getCreationTime() 此方法返回long类型,通过Date类可以取得一个完整的时间。
6 取得用户最后一次操作的时间: public long getLastAccessedTime()

Session与Cookie
session和Cooke用于跨网页共享数据
session:记录独有的个人信息,在不同页面中传递。重要方法:setAttribute(),getAttribute()
Cookie:保存于客户端,供浏览器与Web服务器互通数据用的纯文字文件,当IE执行的时候,会在计算机中产生一个Cookie.

session将信息保存在服务器上,而cookie保存在客户端上。
session比cookie更安全,但更占用资源。
开发原则:session要尽量少使用----尽量少向session中保存信息,session使用了cookie的机制,如果cookie被禁用,则session也无法使用。

application对象
  与session类似,也是用来保存信息,实现在不同页面间的参数传递;但application是所有用户共享的,任何用户都可以访问,而session对象则是每个用户私有的。
  application对象主要的作用就是保存公共信息的:
  主要的方法是属性操作的三个方法:setAttribute(),getAttribute(),removeAttribute().
application属于javax.servlet.ServletContext.
  服务器端的路径不是固定的,有可能此工作目录在c盘或是在d盘上。
  要得到此工作目录的真实路径:public String getRealPath(String path),需要一个参数:"/";

Application是在整个服务器中保持的只有一个实例的对象,在实际应用中往往使用getServletContext()方法代替application。例:getServletContext().getRealPath("/").
为什么此方法没有使用对象调用?
所有的web处理程序,有一个web容器的支持,实际上此方法是由容器进行调用的。this可以省略。

out对象
out对象主要用于动态向客户端输出数据,但在jsp中尽可能少使用此对象。
开发中的原则:HTML代码与JAVA代码分离,如果输出内容,尽量使用表达式输出。<%=%>

JSP安全性及config对象的应用
J2EE中安全性的体现:工作目录的WEB-INF文件夹,此文件夹在浏览器URL中不可见。但是保存在里面的页面虽然安全性高,但是页面无法发现。解决此问题以使页面能够被用户所访问。
解决方法:在WEB-INF文件夹之下存在一个web.xml文件,web.xml文件:属于整个Web站点的配置文件。
<servlet>
  <servlet-name>mldn</servlet>   //在web.xml文件内部起作用,与serlet-mapping关联
  <jsp-file>/WEB-INF/sdemo.jsp</jsp-file>  //找到jsp的路径,此路径一般都保存在WEB-INF之中
</servlet>
<servlet-mapping>
<servlet-name>mldn</servlet-name>  //在web.xml文件内部起作用,与<servlet>中的serlet-name完全一致
<url-pattern>/lxh</url-pattern>   //网页上输入的实际路径地址
</servlet-mapping>

次文件一旦被修改之后,必须重新启动服务器---因为服务器在启动的时候会读取此文件。

config对象
  config对象一般用来取得服务器的初始化配置参数,但若要使用此对象应在WEB-INF/web.xml之中配置。
  要使用config对象的前提:JSP页面必须在web.xml中进行配置
<servlet-name>mldn</servlet-name>
<jsp-file>/WEB-INF/sdemo.jsp</jsp-file>
<init-param>
  <param-name>uname</param-name>
  <param-value>mldn</param-value>
</init-param>
<init-param>
  <param-name>upass</param-name>
  <param-value>LiXingHua</param-value>
</init-param>
</servlet>
<servlet-mapping>
  <servlet-name>mldn</servlet-name>
  <url-pattern>/lxh</rul-pattern>
</servlet-mapping>
如果要取得这些初始化参数,必须通过映射名称进行访问JSP页面,才可以取得初始化参数,就通过config对象取得。

config对象:javax.servlet.ServletConfig
取得初始化参数的方法:public String getInitParameter(String name)
通过此种功能,可以将数据库连接的一些信息写在配置文件之中-JDBC程序

public Enumeration getInitParameterNames()与request.getParameterNames()方法类似,是取得全部配置参数的。
分享到:
评论

相关推荐

    jsp基本语法(指令,包括各种动作,表达式,内置对象等)

    jsp基本语法,各种指令,包括各种动作,表达式,内置对象等,都有介绍,很适合同学们参考啊.还有一些学习的参考网站。

    JSP语法基础PPT

    JSP基础语法,掌握JSP基本语法 掌握JSP基本指令 &lt;jsp:include pate=“uri”/&gt; “uri”%&gt; &lt;jsp:forward page=“uri”/&gt; 掌握JSP九个内置对象

    关于JSP基本语法的下篇

    1,掌握jsp的基本语法 2,掌握jsp的基本指令 3,掌握jsp的九个内置对象

    JSP(JSP介绍、工作原理、生命周期、语法、指令、行为、avaBean、JavaBean、内置对象的介绍、4种属性范围、应用)

    JSP(JSP介绍、工作原理、生命周期、语法、指令、行为、avaBean、JavaBean、内置对象的介绍、4种属性范围、应用)

    梁建武<JSP程序设计实用教程>之第四章 JSP语法

    本章开始学习JSP语法。JSP页面主要由JSP元素和HTML代码构成,...JSP基础语法包括注释、指令、脚本以及动作元素,此外,JSP还提供了一些由容器实现和管理的内置对象。本章完整介绍了JSP的基本语法,并以实例加深理解。

    第四章 JSP语法

    有了前面的基础后,本章开始学习JSP语法。...JSP基础语法包括注释、指令、脚本以及动作元素,此外,JSP还提供了一些由容器实现和管理的内置对象。本章完整介绍了JSP的基本语法,并以实例加深理解。

    jsp语法 笔记

    jsp语法 笔记 JSP页面主要由JSP元素和HTML代码构成,其中JSP...JSP基础语法包括注释、指令、脚本以及动作元素,此外,JSP还提供了一些由容器实现和管理的内置对象。本章完整介绍了JSP的基本语法,并以实例加深理解。

    JSP 程序设计从入门到精通 PDF 教程

     本书较为全面地介绍了JSP技术,由浅入深、循序渐进地介绍了JSP的运行系统,基本概念,语法规范及其相关内容,从基本的JSP概述、与其他技术的对比,到JSP的运行系统和模式,逐步深入地对JSP语法规范进行了详细的...

    03-JavaWeb之JSP1

    1.JSP基础语法 2.JSP内置对象 3.JSP状态管理 4.JSP指令与动作元素 1.JSP应用示例 2.JSP基础语法 1. page指令:通常位于JSP

    JSP(Web开发技术)教案

    第四章 JSP语法 23 4.7 JSP指令 41 第五章 JSP的内置对象 47 第六章 JSP文件操作 53 6.7 用组件实现文件的上传与下载 61 第七章 JSP中数据库的使用 63 7.7 在ResultSet中修改数据 77 第八章 JSP中JavaBean的应用 80 ...

    jsp从入门到高级编程

    6.10.3 session对象的基本例子 6.10.4 利用session制作一个购物车 6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的...

    jsp servlet 入门学习资料-新手一看就懂

    6.10.3 session对象的基本例子 6.10.4 利用session制作一个购物车 6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的...

    JSP高级教程

    6.10.3 session对象的基本例子 6.10.4 利用session制作一个购物车 6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的...

    JSP高级编程

    JSP的语法基本上和Java是相同的,有Java基础的读者可以很快学会如何使用JSP,而没有Java语言基础的读者,只要循序渐进地阅读本书,一样可以成为JSP编程的高手。本书主要分为两个部分:第一部分为JSP基础部分。通过...

    JSP开发入门(二)—-JSP语法的基本原理

    记住这点之后,现在让我们先来看看JSP的编译器指引与指令组件,之后我们将解释JavaBeans与内部对象. JSP编译器指引与指令组件有五种型态.JSP 1.0之后,大部分的JSP是包含在以&lt;&#37; 作为开始%&gt;作为结束的单一...

    jsp网络编程从基础到实践

    第4章 JSP语法 实例3 JSP程序的基本结构 实例4 简单数据类型综合应用实例 实例5 包装类综合应用实例 实例6 数组应用实例 实例7 字符截取程序示例 实例8 查找字符串程序示例 实例9 StringBuffer综合应用程序...

    JSP网络编程从基础到实践的实例代码

    第4章 JSP语法 实例3 JSP程序的基本结构 实例4 简单数据类型综合应用实例 实例5 包装类综合应用实例 实例6 数组应用实例 实例7 字符截取程序示例 实例8 查找字符串程序示例 实例9 StringBuffer综合应用程序...

    JSP动态网站开发基础教程与实验指导(从基础到应用)光盘

    9.4.2 JavaScript基本语法 222 9.4.3 JavaScript对象 226 9.4.4 JavaScript事件 228 9.4.5 JavaScript表单验证 230 9.4.6 JavaScript其他功能 231 9.5 扩展练习 232 第10章 宠物诊所系统分析 235 10.1 系统概述 235...

    jsp WEB开发基础+实例宝典

    本书详细讲解了JAVA web开发的基础知识,包括JSP语法、JSP指令标签、JSP动作标签、JSP内置对象、文件操作等,之后详细讲解了几个实例,包括会员交友系统、网上商店系统等,可谓是JAVA WEB开发的宝典,希望对大家有...

Global site tag (gtag.js) - Google Analytics