关闭

JSP技术的总结

标签: java ee
319人阅读 评论(0) 收藏 举报
分类:

JSP概述

JSP(Java Server Page)和Servlet是JavaEE规范的两个基本成员。
JSP和Servlet的本质一样。
JSP慢慢发展成单一的表现层技术,不再承担业务逻辑组件及持久层组件的责任。


Web应用和web.xml文件

1、构建Web应用

<webDemo>---这是Web应用的名称,可以改变
|--WEB-INF
|      |-classes(保存单个*.class文件)
|      |-lib(保存打包后的JAR文件)
|      |-web.xml——配置描述符
|-<a.jsp>——此处可存放任意多个JSP页面

JSP的4种基本语法

1、JSP注释:<%--注释内容--%> HTML注释:<!--注释内容-->
JSP注释不会发送到客户端
2、JSP声明:<%!声明部分%>
JSP页面的声明部分将转换成对应的Servlet成员变量或方法
3、输出JSP 表达式:<%=表达式>
4、JSP脚本:<% %>
所有可执行Java代码都可通过JSP脚本嵌入HTML页面
JSP脚本里不能定义方法

JSP的3个编译指令

JSP的编译指令是通知JSP引擎的处理消息

page:针对当前页面的指令
include:用于指定包含另一个页面
taglib:用于定义和访问自定义标签

编译指令语法:<%@编译指令 属性名=:"属性值"...%>
1、page指令

extends:指定JSP页面编译所产生的Java类所继承的父类,或所实现的接口
import、session、buffer、errorPage、isErrorPage、language、autoFLush
info:设置该JSP程序的信息,可以看做为说明,在JSP页面中,调用getServletInfo()方法获取该值
contentType:用于设定生成网页的文件格式和编码字符集。

2、include指令:<%@include file="relativeURLSpec"%>
静态的include语句:包含页面在编译时将完全包含了被包含页面的代码

JSP的7个动作指令

运行时的动作
与编译指令区别:编译指令在将JSP编译成Servlet时起作用,而处理指令通常可替换成JSP脚本,是JSP脚本的标准化写法。

jsp:forward:执行页面转向,将处理请求的处理转发到下一个页面
jsp:param:用于参数传递,必须与其他支持参数的标签一起使用
jsp:include:动态引入一个JSP页面
jsp:plugin:下载JavaBeann或Applet到客户端执行
jsp:useBean:创建一个JavaBean的实例
jsp:serProperty:设置JavaBean实例的属性值
jsp:getProperty:输出JavaBean实例的属性值

1、jsp:forward:

<jsp:forword page="{relativeURL|<%=expression%>}">
 {<jsp:param.../>}
</jsp:forward>

执行forward指令时,用户请求的地址依然没有发生改变
2、include指令:

">      <jsp:param name="parameterName" value="patameterValue"/>
   </jsp:include>

静态导入和动态导入的区别
(1)静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Serlvet;动态导入则在Serlvet中使用include方法来引入被导入页面的内容
(2)静态导入时被导入页面的编译指令会起作用;动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容
(3)动态包含可以增加参数

forward与include区别
forward拿目标页面代替原有页面,include则拿目标页面插入原有页面

3、useBean、setProperty、getProperty指令
useBean:
<jsp:useBean id="name" class="classname" scope="page|request|session|application"/>
setProperty:<jsp:setProperty name="BeanName" property="propertyName" value="value"/>
getProperty:<jsp:getProperty name="BeanName" property="propertyName"/>

JSP脚本中的9个内置对象

9个内置对象都是ServletAPI接口的实例,它们已经是对象,可以直接使用

application:JSP所属的Web应用本身
config:JSP的配置信息(JSP页面通常无需配置)
exception:代表其他页面中的异常和错误
out:JSP页面的输出流
page:页面本身
pageContext:代表JSP页面的上下文
request:封装了一次请求,客户端的请求参数都被封装在该对象里
response:代表服务器对客户端的相应
session:代表一次会话。客户端浏览器与站点建立连接,会话开始。客户端关闭浏览器时,会话结束

JSP内置对象的 实质:_jspService*()方法的形参(request、response),或局部变量。所以只能在JSP脚本,JSP输出表达式中使用,不能在声明中使用(会找不到变量)

1、application对象
在整个Web应用的多个JSP、Servlet之间共享数据
访问Web应用的配置参数
(1)多个JSP、Servlet共享数据
通过setAttribute(String attrName,Object value)方法将一个值设置成application的attrName属性,对整个Web应用有效,访问该属性方法:getAttribute(String attrName)
(2)获得Web应用配置参数(web.xml)getInitParameter(String paramName)和getInitParameter()

2、config对象
当前JSP配置信息,较少使用该对象,config是ServletConfig的实例,获取配置参数:getInitParameter(String paramName)

3、exception对象
exception对象是Throwable的实例
JSP的异常处理机制对JSP声明不起作用

4、out对象
代表一个页面输出流
<%=…%>表达式的本质就是out.write(…);

5、pageContext对象
作用:访问JSP之间的共享数据,可以访问page、request、session、application范围的变量
(setAttribute)getAttribute(String name):取得page范围内的name属性
getAttribute(String name,int scope):取得指定范围内name属性,
scope:PageContext.Page_SCOPE/REQUEST_SCOPE/SESSION/APPLICATION
getAttributesScope(String)返回变量所在的生存范围
可以通过pageContext对象获取其他内置对象(getRequest()/getResponse()/getServletConfig()/getServletContext()/getSession())

6、request对象
(1)获取请求头/请求参数
Web应用是请求/响应架构
request是HttpServletRequest接口的实例
方法:

String getParameter(String paramName):获取paramName请求参数的值
Map getParameter():获取所有请求参数名和参数值所组成的Map对象
Enumeration getParameterNames():获取所有请求参数名所组成的Enumeration对象
String[]getParameterValues(String name):paramName请求参数的值,当该请求参数有多个值时,该方法将返回多个值所组成的数组

HttpServletRequest所提供访问请求头的方法

String getHeader(String name):根据指定请求头的值
java.util.EnumerationgetHeaderNames():获取所有请求头的名称
java.util.EnumerationgetHeaders(String name):获取指定请求头的多个值
int getIntHeader(String name):获取指定请求头的值,并将该值转为整数值

请求头:通常由浏览器自动添加,一次请求总是包含若干请求头
请求参数:需要开发人员控制添加,让客户端发送请求参数通常分两种情况。

GET方式的请求:在浏览器地址栏输入访问地址所发送的请求/提交表单发送请求时,form元素没有设置method属性,或method属性为get,请求数据量较小,一般不大于2kb
POST方式的请求:通常使用提交表单的方式,method属性为post。数据量更大,安全性相对较高(地址栏看不到请求参数值)

表单中有name属性的表单域才生成请求参数
若多个表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值
POST:若请求参数中包含非西欧字符,则必须在获取请求参数之前先调用setCharacterEncoding()方法设置编码的字符集

GET:若请求参数包含非西欧字符

String rawName=request.getParameter("name");
byte[] rawBytes=rawName.getBytes("ISO-8859-1");//将请求参数值使用IOS-8859-1分解成字节数组
String name=new String(rawBytes,"UTF-8");//将字节数组重新编码成字符串

(2)操作request范围的属性
HttpServletRequest包含如下方法,用于设置和获取request范围的属性

setAttribute(String attName,Object attValue):将attvalue设置成request范围的属性
Object getAttribute(String attName):获取request范围的属性

(3)执行forward或include
方法:**getRequestDispatcher(String path) path必须以斜线开头(“/a.jsp”)**path为forward和include的目标路径,返回RequestDispatcher,该对象两个方法:

forward(ServletRequest request,ServletResponse response):执行forward
include(ServletRequest request,ServletResponse response):执行include

7、response对象
代表服务器对客户端的响应
(1)response响应生成非字符响应(图、PDF…)
方法:getOutputStream()方法,返回响应输出字节流
(2)重定向
与forward区别:丢失所有请求参数和request范围的属性
方法:sendRedirect(String path)执行redirect后生成第二次请求,URL改变
(3)增加Cookie
Cookie通常用于网站记录客户的某些信息
与session区别:session会随浏览器关闭而失效,Cookie会一直存放在客户端机器上。=
方法:void addCookie(Cookie cookie):增加Cookie
步骤:

创建Cookie实例,Cookie的构造器为Cookie(String name,String value)
设置Cookie的生命期限Cookie.setMaxAge()
向客户端写Cookie

客户端Cookie使用request对象,提供了getCookies()方法,返回Cookie数组
获得参数值:Cookie.getValue();
值为中文的Cookie需要借助 java.net.URLEncoder.encode(“中文”,”编码字符集”)先对中文字符进行编码,编码后的结果设为Cookie,读取Cookie,应先读取,再使用 java.net.URLEncoder.encode(cookie.getValue())对其进行解码

8、Session对象
一次会话含义:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止
session通常用于跟踪用户的会话信息,可以在多个页面的跳转之间共享
session对象是HttpSession的实例,方法:

setAttribute(String attName,Object attValue):设置session范围内attName属性的值
getAttribute(String attName):返回session范围内attName属性的值

session机制通常用于保存客户端的状态信息,需要保存到Web服务器的硬盘上,session里的属性值必须是可序列化的,否则将会引起不可序列化的异常(session属性值可以使任何可序列化的Java对象

1
0
查看评论

Jsp技术总结

这节我们总结一下Jsp的相关技术。 1. 什么是JSP         JSP即Java Server Pages,它和servlet技术一样,都是sun公司定义的一种用于开发动态web资源的技术。该技术的最大特点在于:...
  • eson_15
  • eson_15
  • 2016-04-29 10:45
  • 8804

JSP的学习总结

什么是jsp? jsp是一个简化的servlet的设计,jsp是一种动态网页技术的标准也是javaee的标准。jsp是在服务端运行的 在page中,pageEncoding原始是jsp文件本身的编码 contentType的charset是指服务器发给客户端时候的内容编码 contentTy...
  • feng_xiao_dong
  • feng_xiao_dong
  • 2016-06-10 16:35
  • 471

我的Java开发技术总结

我的Java项目开发工具总结
  • cloud_ll
  • cloud_ll
  • 2016-06-04 17:51
  • 1748

JSP和servlet知识点总结

第一章- 动态网页开发基础 三大领域:B/S (网站)C/S(QQ) 嵌入式开发(苹果,安卓手机) 动态网页/静态网页: 所需技术:htm,css,数据库,javascript,xml,一门高级语言(java,C#,PHP) 主流的动态网页技术:jsp/asp.net/php Web服务器...
  • rongxiang000
  • rongxiang000
  • 2016-06-18 20:59
  • 980

PHP技术总结

sublime在浏览器中快速打开的相关配置
  • Run_Function_Online
  • Run_Function_Online
  • 2017-06-21 17:46
  • 155

JSP课程设计总结

前前后后大概花了一个星期的时间完成了老师布置的JSP课程设计作业,其中敲代码的时间并不算多,相当一部分代码也是参考书上的,主要的时间是花在调试程序上。期间遇到了很多烦人且坑爹的问题,足以让人抓狂。闲话不多说,整理一下发型,平复一下心情,对这次的小项目做个总结…… 遇到的问题: 1.第一个问题就是...
  • d0105055134
  • d0105055134
  • 2015-05-26 11:22
  • 1761

JSP技术的发展趋势

JSP技术主要用来简化动态网页的开发过程,由于它在形式上和html文档比较相似,因此与Servlet相比,用JSP来编写动态网页更加直观。 但是,当网页非常复杂时,JSP文件中的大量的html标记和java程序片段混杂在一起,会大大削弱JSP代码的可读性和可维护性,而且会增加调试JSP文件的难度。 ...
  • confirmAname
  • confirmAname
  • 2013-05-23 16:41
  • 1542

JSP总结(经典)

day1 JSP 定义:     1)Java Server Page, Java EE 组件,本质上是 Servlet。     2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Ht...
  • gaojinshan
  • gaojinshan
  • 2014-03-05 17:00
  • 8435

JSP技术简介

    JavaServer PagesTM (JSP)技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。...
  • jlusdy
  • jlusdy
  • 2005-05-16 13:00
  • 1054

android开发工作用到技术总结

本期用工作算是告一段落,下面就对工作中用的技术进行一些总结。 一、实现listview中item如下图效果。 如设计图所示,当点击item后,item上弹出一个半透明的视图层。主要是用的popupwindow来实现的。但使用pupupwindow会有一些点要注意。 1.popupwindow的显...
  • bluejww
  • bluejww
  • 2016-07-28 14:32
  • 1433
    个人资料
    • 访问:7650次
    • 积分:511
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论