首页 > 开发 > JSP > 正文

什么是JSP?JSP简明教程

2020-02-26 21:10:30
字体:
来源:转载
供稿:网友

strong>JSP运行原理:当Web服务器上的一个JSP页面第一次被请求执行时,JSP引擎先将JSP页面文件转译成一个Java文件,即Servlet,servlet通过HTML与客户交互。服务器将前面转译成的Java文件编译成字节码文件,再执行这个字节码文件来响应,从而加快了执行的速度见图

2. JavaScript的作用JavaScript作用:使得网页交互性更强,更生动灵活,以下是嵌入到HTML页面的一段JavaScript代码形式

JavaScript代码 ….

3. JavaScript中对象和对象关系JavaScript中预先定义了一些对象,以方便程序员使用,图3-2是对象之间的层次和关系图

 

 

4、JSP指令:JSP代码指的就是我们自己嵌入在JSP页面中的Java代码,这又分为两种:第一种是JSP页面中一些变量和方法的声明,在声明时,使用“”标记。另外一种,就是常用到的用“”包含的JSP代码块

1. page指令

page指令是针对当前页面的指令。page指令由“”字符串构成的标记符来指定。在标记符中是代码体,包括指令的类型和值。 例如:指令告诉JSP容器将java.sql包中的所有类都引入当前的JSP页面。

常用的page指令标记有8个:language、extends、import、errorPage、isErrorPage、contentType、isThreadSafe和session。

language设置JSP页面中用到的语言,默认值为“Java”,也是目前唯一有效的设定值。使用的语法是:

import设置目前JSP页面中要用到的Java类,这些Java类可能是Sun JDK中的类,也有可能是程序员自己定义的类。例如:。有些类在默认情况下已经被加入到当前JSP页面,而不需要特殊声明,包括四个类:java.lang.*;java.servlet.*;java.servlet.jsp.*和java.servlet.http.* 。

extends设定目前JSP页面要继承的父类。一般情况下不需要进行设置。在默认情况下,JSP页面的默认父类是HttpJspBase。例如:当前JSP页面要继承mypackage包下的myclass类,相应的声明语句为:“”。
errorPage用来设定当JSP页面出现异常(Exception)时,所要转向的页面。如果没有设定,则JSP容器会用默认的当前网页来显示出错信息。例如: “”

isErrorPage用来设定当前的JSP页面是否作为传回错误页面的网页,默认值是“false”。如果设定为“true”,则JSP容器会在当前的页面中生成一个exception对象。

 

contentType这个属性用来设定传回网页的文件格式和编码方式,一般使用 “text/html;charset=GBK”。

isThreadSafe 定义JSP容器执行JSP程序的方式,默认值为“true”,代表JSP容器会以多线程方式运行JSP页面。当设定值为“false”时,JSP容器会以单线程方式运行JSP页面。

session定义当前JSP页面中是否要用到session,默认值为“true”。

2. include指令

include指令用来指定怎样把另一个文件包含到当前的JSP页面中,这个文件可以是普通的文本文件,也可以是一个JSP页面。例如:“”。 采用include指令,可以实现JSP页面的模块化,使JSP的开发和维护变得非常简单。

4.8 JSP指令动作指令

JSP编译指令是让JSP容器自动采取的动作,但对于Web开发人员,有些时候想要自己控制JSP页面的运行,这时可以采用JSP中的操作指令。

JSP 标准动作

标记
标记
标记
标记
标记

JSP 动作的作用

  • 实例化对象
  • 与服务器端资源进行通信
  • 提高组件的可重用性,增强应用的可维护性
  • 使 JSP 页面可与 JavaBean 对象进行交互
  • 通过标记库定义自定义标记

JSP 动作的语法

  • JSP 动作标记遵循 XML 语言的语法
  • 具有一个名称
  • 具有前缀 jsp
  • 用一对尖括号()括起来
  • 在尖括号内定义标记:

jsp:include指令

jsp:include标准动作用于在当前的JSP页面中加入静态和动态的资源。
语法格式为:

jsp:include指令必须以“/”结束,功能和include指令大致相同。
区别:

  • include(操作指令):编译时包括,形成一个整体
  • include(动作):运行时包括

jsp:forward动作指令

jsp:forward动作指令用于把当前的JSP页面转发到另一个页面上。 基本语法为:

使用该功能时,浏览器的地址栏中地址不会发生任何变化。

jsp:param指令

使用jsp:param操作指令可以在执行jsp动作指令forward操作动作时,追加参数.以动作指令字/值的方式进行传递。
jsp:param操作指令以标记“

实例:forwardExample1.jsp, paramExample1.jsp

jsp:plugin指令

使用“”插入一个applet或Bean,必要的话还要下载一个Java插件用于执行它。 JSP 语法格式如下:

type="bean | applet" 
code="classFileName" 
codebase="classFileDirectoryName" 
[  
[ value="{parameterValue | }" /> ]+ 
?

?[ text message for user

JSP Bean标记

与JavaBean交互的三个标记



创建一个Bean实例并指定它的名字和作用范围。语法格式如下:

或者


初始化代码

设置Bean的属性值. JSP 语法格式如下:


property= "*" ? | 
property="propertyName" [ param="parameterName" ] ? | 
property="propertyName" value="{string | }" 

/>

  • name="beanInstanceName" 表示已经在“”中创建的Bean实例的名字。
  • property="*" 储存用户在jsp输入的所有值,用于匹配Bean中的属性。
  • property="propertyName" [ param="parameterName" ]
  • 用一个参数值来指定Bean中的一个属性值,一般情况下是从request对象中获得的。其中property指定Bean的属性名,param指定request中的参数名。
  • property="propertyName" value="{string | }" 使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果这个字符串,那么它就会被转换成Bean属性的类型(转换方法见表4.1)。如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。
  • 如果参数值为空值,那么对应的属性值也不会被设定。此外,不能在同一个“”中同时使用param和value参数 。

4.9 JSP中的中文字符处理

当利用request.getParameter得到Form种元素的时候,默认的情况字符编码为ISO-8859-1,这种编码不能正确的显示汉字。
目前有两种解决方法:

一种是在执行操作之前,设置request的编码格式,语法是:

request.setCharacterEncoding(“GBK”);

另一种方法是转换字符编码 :

byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
%>

 

4.10 小结

JSP语法是学习好JSP开发的基础,JSP网页包括HTML标签和Java程序片。

JSP指令有page指令和include指令两种,page指令用来定义JSP页面的全局属性;include指令用来静态插入一个文件。

JSP动作指令又分多,是在运行时执行的一些动作和行为。

中文处理也是需要注意的一个问题。

5.1 内置对象概述  

JSP页面其中存在三个最主要的内置对象:

request:得到客户端的信息。(HttpServletRequest)

session:保存单个用户访问时的一些信息。(HttpSession)

response:处理服务器端对客户端的一些响应。(HttpServletResonpse)

request对象与response对象存在于http通信中,见图5-1



图5-1 request对象与response对象存在于http通信中

还有其它内置对象它们为:

Config:是JSP配置处理程序句柄,在JSP页面范围内有效。

application:用来保存网站的一些全局变量。

out:功能是把信息回送到客户端的浏览器中。

pageContext:提供了访问和放置页面中共享数据的方式。

5.2 request对象  

request对象是javax.servlet.HttpServletRequest 子类的对象,当客户端请求一个JSP页面时,JSP 容器会将客户端的请求信息包装在这个request对象中

请求信息的内容包括请求的头信息(Header)、 系统信息(比如:编码方式)、请求的方式
(比如:GET或POST)、请求的参数名称和 参数值等信息

request对象的方法

getAttribute(String str) 

getCookies() 

getHeader(String str) 

getParameter(String str)

getParameterValues(String str) 

实例: requestApp1.jsp

request对象获得表单数据

get与post区别

实例:userRegist1.jsp

 

5.3 response对象  

response对象

response对象提供跟多方法和JSP进行交互,主要用到有:

addCookie(Cookie cookname)

sendError(int errorcode)

sendRedirect(String url)

实例:sendRedirectExample1.jsp

setContentType(String contentTypestr)

setHeader(String headername,String headervalue)

实例:refreshExample1.jsp

Cookie是什么

Cookie是服务器上根据用户浏览器识别用户并记录一些相关信息,例如:

  • 网站能够精确地知道有多少人浏览过。
  • 测定多少人访问过;
  • 测定访问者有多少是新用户(即第一次来访),多少是老用户;
  • 测定一个用户多久访问一次网站。
  • 网站保存用户的设置,按照用户的喜好定制网页外观。

Cookie同时标注用户和浏览器,有一条极为短小的信息,能够被网站自动地放置在一台电脑
的硬盘中。

通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。在你浏览某些网站的时,网站的程序会在你不知不自觉中将一个小的 Cookie(作为一个文本文件)存储在你的硬盘中。

使用Cookie

Cookie存放在客户端,首先要建立一个Cookie,然后设置其属性,再通过response对象的addCookie()方法将其 放入客户端,获取Cookie对象可用request对象的getCookies()
方法。

创建Cookie

Cookie(String cookiename,String cookievalue)

不能用:空白字符、[]、()、=、,、“、/、?、@、:


设置与读取Cookie属性

  • getComments()/setComments(String purpose)
  • getDomain()/setDomain(Stringpattern )
  • getMaxAge()/setMaxAge(intexpiry)
  • getName()
  • getPath()/setPath(Stringuri)
  • getSecure()/setSecure(booleanflag)
  • getValue()/setValue(StringnewValue)
  • getVersion ()/setVersion(intv)


Cookie操作

将Cookie加入HTTP头:

Cookie usernameCookie=new Cookie(“username”,”dzycsai”);

response.addCookie(usernameCookie);

读取Cookie:

  • getCookies()
  • getName()
  • getValue()

5.4 session对象  

session对象概要其主要关键点是:

  • HTTP是无状态(stateless)协议;
  • Web Server 对每一个客户端请求都没有历史记忆;
  • Session用来保存客户端状态信息;
  • 由Web Server 写入;存于客户端;
  • 客户端的每次访问都把上次的session记录传递给Web Server;
  • Web Server读取客户端提交的session来获取客户端的
    状态信息;

session对象的方法

  • getAttribute (String name)
  • long getCreationTime()
  • int getMaxInactiveInterval()
  • long getLastAccessedTime()
  • invalidate()
  • removeAttribute (Stringname)
  • setAttribute(Stringname, Objectvalue)

实例1:记住会话的用户名 sessionUserLogin.jsp

实例2:猜字母游戏 guessCharExample1.jsp

 

5.5 application对象

服务器启动时就会产生application对象,为用户分配application对象。其要点如下:

  • 不同客户产生同一个session对象;
  • 所有客户的application对象都是同一个。
  • 例如:聊天室程序、计数器程序、留言板程序。
  • 生命周期:服务器的启动至关闭。


application对象的方法

  • getAttribute (String name)
  • getAttributeNames()
  • getInitParameter()
  • getServletInfo()
  • setAttribute(Stringname, Objectvalue)

实例:网站计数器CounterApp1.jsp

5.6 out对象

out对象是javax.servlet.jsp.JspWriter类的一 个子类的对象,它的作用是把信息回送到客户 端的浏览器中。在out对象中,最常用的方法就 是print()和println()。在使用print()或println() 方法时,由于客户端是浏览器,因此向客户端输出时,可以使用HTML中的一些标记,例如: out.println(”

Hello,JSP

“);。

out对象其他一些常用的方法

  • out.write功能和out.print相同
  • newLine()的功能是输出一个换行符
  • out.flush()的功能是输出缓冲的内容。
  • out.close()的功能是关闭输出流。
  • out对象的生命周期是当前页面。因此对于每一个JSP页面,都有一个 out对象

实例:用out对象输出表格outApp1.jsp

 

5.7 小结

本章学习JSP内置对象的应用,重点学习request、response、session、application、out几个常用对象,request对象封装用户需要提交的数据,而response对象用来对客户请求做出响应。

 

练习

  1. 改造5.4中的计数器,用application与session来编写,要求当一个新用户会话开始时才启动技术。
  2. 编写一个用户注册网页,用JavaScript检验数据的合法性,用request对象接收提交的数据,并显示提交的数据。 

6 文件的上传与下载


用普通方法实现文件上传

实例:文件上传

UploadFileExample1.jsp

AccepteUploadFile.jsp

实例:文件下载DownFileExample2.jsp

 

 

6.7 用组件实现文件的上传与下载

用组件实现文件的上传与下载可以用到一个比较流行的组件jspSmartUpload

相关类:

File类

savaAs()方法

savaAs(String dstFileName)

savaAs(String dstFileName,int savaAsOption)

SAVEAS_PHYSICAL

SAVEAS_VIRTUAL


jspSmartUpload相关类的介绍

File类

isMissing()

getFieldName()

getFileName()

getCount()

getSize()

getCollection()

request类

Initialize()

upload()

save()

getRequest()

getFiles()

setAllowedFileList(String allowedFilesList)

smartUpload类

setDeniedFilesList()

setMaxFileSize()

setTotalMaxFileSize()

downloadFile()

实例:用jspSmartUpload组件实现文件上传

uploadFile.htmldo_upload.jsp

实例:应用jspSmartUpload组件进行较复杂的表单处理uploadFile2.htmldo_upload2.jsp

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表