JSP慕课笔记——第四章

JavaWeb开发环境搭建

Java集成开发环境 eclipse
数据库:mySQL
服务器:Tomcat
MySQL管理工具   
---------一系列的安装过程省略-----------

数据来自内存

HTML中的数据用数组用对象用hashmap填充,用linkilst填充,后期选择来自数据库中的数据

jsp代码段经典举例

集合类:是容器类的数据结构,包括list,map,set

list:按照对象进入的顺序保存对象,不做排序或编辑操作。其中的值允许重复,因为其为有序的数据结构
map:基于键的成对的数据结构,键值必须具有唯一性,键不能相同,否则会被替代
set:对每个对象只能接受一次,并使用自己内部的排序方法,其中的值不允许重复,是无序的数据结构

jsp编译指令
jsp编译指令是通知jsp引擎的消息
作用:
设置jsp程序和由该jsp程序编译所生成的servelt程序的属性,它不直接生成输出,而是告诉引擎如何处理JSP页面中的某些部分
在JSP2.0中,定义了page(针对当前页面的指令),include(指定如何包含另外一个页面),tablib(用于定义,和访问自定义标签)三种指令,每种指令又都定义了一些各自的属性

page指令
page指令用来指定jsp脚本语言的种类,导入的包或类,指定页面编码的字符集等
作用于整个jsp界面,包括静态文件,一般放在jsp文件的顶部

格式:	<%@ page contentType="text/html;charset=gb2312"%>
掌握一些属性:
contentType,charaset。errorPage,isErrorPage等属性的含义

include,taglib编译指令

语法:<%@include file = ''relativeURL''%>
include指令:将一个外部文件嵌入当前jsp文件中,生成一个完整的页面,
插入的位置与include指令在当前jsp页面中的位置保持一致,减少开发者多次复制,
子文件除了contentType和charset要相等
静态包含:生成一个servelt类

在编写jsp页面程序时,除了使用HTML标签,还可以引入JSP的标准库中的标签JSTL或自定义标签, 以便简化JSP页面设计

taglib编译指令:定义一个标签以及自定义标签的前缀,以便在页面中使用基本表极或自定义表极来完成指定的功能(记得要导入标准库)
Tablib指令格式:<%@ taglib uri = ''taglibURI'' prefix = "tagPrefix"%>

动作指令
又叫JSP动作元素,JSP动作指令为请求处理阶段提供信息,是运行时的脚本动作,以标签的形式使用。
jsp动作遵循XML元素的语法。

JSP动作指令分类

 - 第一类:JSP1.2就开始有的基本元素,包括6个动作元素
 <jsp:forward><jsp:include><jsp:param><jsp:plugin><jsp:params><jsp:fallback>
 -第二类:与Javabean有关的
 <jsp:useBean><jsp:setProperty><jsp:getProperty>
 -第三类:jsp2.0新增的元素,与JSPdocument有关
 <jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>
 -第四类:新增的动作元素,主要用来动态生成XML元素,包括3个动作
 <jsp:attribute><jsp:body><jsp:element>
 -第五类:新增的动作元素,主要用来Tag File中
 <jsp:invoke><jsp:dobody>

-forward动作指令:
实现服务器端的页面跳转,从当前页面转发到另一个页面,可转发静态HTML,动态JSP,或者容器servelt
格式一:

<jsp:forward page = "relativeURl">

格式二:

<jsp:forward page="{relativeURL}"/>
<jsp:param name="parameterName" value="parameterValue"/>  page属性指定转发的路径
</jsp:forward> param用来设置参数

-include动作指令:

把另外一个资源的输出内容插入当前的JSP页面的输出内容之中。实际上是把指定页面的servelt所生成的应答内容插入到本页相应位置。这种插入被称为动态引入。涉及到的两个JSP文件会被翻译成两个servelt类

格式:<jsp:include page="{relativeURL}" flush="ture"> flush:是否先将当前JSP页面已输出的内容刷新到客户端
二:<jsp:include page="{relativeURl}" flush="ture">
<jsp:param name=""parameterName" value="parameterValue/">
include与param一起使用,加载文件中,同时向该文件提供信息
</jsp:include>

静态与动态include区别:
-编译阶段 请求阶段
-一个servelt 两个servelt
-静态内容 动态内容
-效率高 效率低

-plugin动作指令
plugin动作指令动态的下载服务器端的JavaBean或者Java Applet程序到客户端的浏览器上执行。当jsp页面被编译并相应到浏览器执行时,plugin会根据浏览器的版本替换成object或者embed标记。

格式:
<jsp:plugin type="applet" code="Clock.class" codebase="applet" jreversion="1.2" width="160" height="150">
<jsp:fallback>APPLET载入失败!</jsp:fallback>
</jsp:plugin>

-param动作指令
param指令经常和include,forward,以及 plugin指令一起使用,用于页面间的参数信息传递

<jsp:forward page="{relativeURL"}/>
<jsp:param name="parameterName" value="parameteValue"/>
</jsp:forward>
一般三个命令配合使用

容易出现的问题:中文参数乱码–>发送参数的那个页面要加上对request的编码格式设定
语句块里不能添加注释等其他语句。

jsp页面的基准地址

jsp程序中经常有页面跳转,超链接等操作。通常提供的是相对地址,用于计算目标地址。要谨慎使用

  • 物理地址:绝对地址
  • 相对地址:页面跳转,超链接,表单的目标地址

基准地址:相对地址的出发点

当前路径:./
上一级路径:../
上上一级路径:../../
通过:<base href="<%=basePathURL%>“来设置基准地址
不设置基准地址就是 当前 jsp的物理地址

模板生成的jsp:自动将基准地址设为项目路径

JSP隐含对象概念,演示

JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显示声明即可使用,JSP里的代码可以直接访问JSP的内置对象。

request:请求对象
response:响应对象
session:会话对象
application:应用程序对象
page:页面对象
out:输出对象
config:配置对象
exception:例外对象
pageContext:上下文对象

其中request,session,application,pageContext称为域对象,用来保存数据
HTTP无状态协议:协议对于事物处理没有记忆能力,JSP是通过session对象来解决的

out对象
是Java.servlet.jsp.JspWrite类的实例,主要作用是用来向客户端输出内容;
同时管理应用服务器的缓冲区,out对象主要有两个方法用于输出数据。Out.println(DataType)和print(DataType) out可以输出任何的Java合法表达式

page对象
page对象代表JSP页面本身,或者说它代表了被转换后的Servlet。在JSP页面中,this这个关键字表示当前JSP页面这个对象,因此它可以调用任何被servlet类所定义的方法

request对象
客户每次向服务器发送请求时,JSP引擎都会创建一个request对象。客户端请求的信息会封装在request对象中,通过它才能了解到客户端的需求然后做出响应。它是Java.servlet.HttpServelt.Request类的实例。request请求封装了客户端的相关信息和所有的请求参数。
常用的方法:

setAttribute(String name,object o)把一个对象以指定名字保存在request中
getAttribute:
getParameter:传入提交表单控件中的name然后返回输入的值。
getRequestSessionId
setCharacterEncoding
getCookies
getParameterValues

response对象
response是javax.servlet.http.httpServletResobse接口的实例,是服务器对request对象请求的回应,负责向客户端发送数据。
同时调用response方法,还可以获得服务端的相关信息,如状态行,head,和信息体等,其中状态行包括使用的协议和状态码,head包含服务器和返回文档的信息

常用方法:addCookies
encodeURL
getCharacterEncoding
getContentType
getOutputStream
getWriter
sendRedirect
setCharacterEncoding

session对象
是javax.servelt.http.HttpSession接口的实例对象。session对象是用户首次访问服务器创建时由服务器创建的。在JSP中通过HttpServletRequest的Session(true)方法获得session对象。
注意:只有访问JSP和servlet程序时才会创建session对象,只访问html,image等静态资源不会创建session对象。

  • 继续访问,则维护session对象
  • 可设置session对象的生存时间
  • 所有界面都能访问session对象
  • 通过set/getAttribute来设置和获取session对象的属性和值
  • session.invalidate()手动消除session

application对象
是由服务器创建的,是jap所有隐含对象中生存周期最长的,直至服务器关闭。一般将多个用户共享的数据放在application中,用法类似于request和session。

config对象
存储着一些servlet初始的数据结构。如果在web.xml中,针对某个servlet文件或者jsp文件设置了初始化参数,则可以通过config对象来获取。一般很少用到。

异常对象
当jsp页面发生错误时,会产生异常,exception就是针对异常做出响应的对象。

pageContext对象
能存取其他内置对象,当内置对象包括属性时,也支持对这些属性的读写。

cookie对象
cookie不是JSP的内置对象,需要显示创建,但是jsp设计时经常使用cookie技术来说实现一些特殊功能
使用respond.add进行添加cookie,使用request.getCookies来获取cookie,遍历所有的cookie

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值