`
jl0626
  • 浏览: 2702 次
社区版块
存档分类
最新评论

JSP总结

    博客分类:
  • JSP
JSP 
阅读更多
一、JSP的概念;其实就是Servlet,只不过Servlet如果大量写入表现层语言会很难维护,因此会引入JSP。JSP其实两个部分:
(1)、HTML
(2)、JAVA
二、JSP原理:Web服务器接收.jsp文件请求时,会把JSP文件语法交给JSP引擎处理。Tomcat中的JSP引擎其实就是一个Servlet小程序。每一个JSP页面在第一次访问的时候,JSP引擎会把JSP页面翻译成一段小Servlet的源程序。接着再把这个Servlet源程序编程成相对应的class程序。
三、JSP中,一般以下语法放入Java代码:
(1)、<%  %> 放入Java代码
(2)、<%! %> 变量与函数的声明
(3)、<%= %> 表达式写法
(4)、<%-- --%> JSP注释
四、JSP 三大指令:
1、page指令
Page指令:
page指令通常位于JSP的头部,注意一个JSP页面可以包含一个或者多个page指令
<%@ page
   [language="Java"]
   [extend="package.class"]
   [import="package.class|package.*|..."]
   [session="true|false"]
   [buffer="none|8KB|..."]
   [autoFlush="true|false"]
   [isThreadSafe="true|false"]
   [info="text"]
   [contentType="mineType;charset="UTF-8"]
   [pageEncoding="ISO-8859-1"]
   [isErrorPage="true|false"]
   [errorPage="error.jsp"]
%>

language: 声明当前JSP页面使用的脚本语言种类,通常是java。默认值也是java。
extends: 指定JSP页面编译所产生Java类所去继承的类。
import: 通常用来导入包。有几个包是默认自动导入的:
java.lang.*,java.servlet.*,java.jsp.*  ...;
session: 设置当前页面是否需要HTTP Session。
buffer: 设置当前的缓存大小。默认值为8KB。可以设置none。
autoFlush: 当前输入缓冲区即将溢出的时候,是否需要抛出一个溢出异常。
info: 设置该JSP页面的信息。
errorPage: 指定错误处理的页面。
isErrorPage: 设置本JSP页面是否需要错误页面。通常情况下是无序指定。
contentType: 用于生成网页的文件格式以及编码。
pageEncoding: 指定生成网页的编码字符集。
2、include指令
include 指令:

使用incluce,可以将一个外部文件包含到JSP文件中,同时解析必要Java语法。注意编译指令
最好引入静态的JSP文件。什么静态引入?一旦使用编译include的静态引入本把引入的JSP融合
成一个页面。因此被包含页面设置不需要是完整的页面。
<%@include file="relativeURLFile" %>

注意:需要指出的是,静态包含还会包含页面中的编译指令,如果
两个页面的编译指令相冲突,程序报错。
五、JSP的七个动作指令
1、jsp:forward 执行页面专项,将请求处理转发到下一个页面。
2、jsp:param 用于传递参数,注意:必须和其他支持参数的标签一起使用。
3、jsp:include 用于动态引入一个JSP页面。
4、jsp:plugin 用于下载JavaBean 或者  Applet 到客户端执行。
5、jsp:useBean 创建一个JavaBean的实例。
6、jsp:setProperty: 设置JavaBean 实例的属性值。
7、jsp:getProperty: 输出JavaBean 实例的属性值。
六、JSP隐式对象
所谓对象,就是在JSP中内置好的对象,就叫隐式对象。
JSP 九大内置对象:
1、application  -- javax.servlet.ServletContext。
该实例代表JSP所属的Web应用本身。
2、config  -- javax.servlet.ServletConfig
该实例代表JSP所属的配置信息。
3、exception -- java.lang.Throwable
该实例代表JSP所属其他页面的异常和错误。
4、page --  代表页面本身。也就是Servlet的this
5、out -- javax.servlet.jsp.JspWriter
该实例代表JSP的输出流
6、pageContext -- javax.servlet.jsp.PageContext
该实例代表页面的上下文
7、request -- javax.servlet.HttpServletRequest
该实例封装一个请求
8、response -- javax.servlet.HttpServletResponse
该实例代表客户端的响应
9、session -- javax.servlet.HttpSession
该实例代表一次会话

application 通过setAttribute方法设置application的某个属性,
该属性值可以作用于整个Web。因此在Web内可以使用getAttribute获取该属性。

需要指出的是:虽然使用application(即Servlet实例)可以方便多个Servlet,多个JSP
共享数据,但不要仅仅为了JSP、Servlet共享数据就将数据放入Application中!由于Application
代表了整个的Web因此,因为只有关于整个Web项目的配置信息,数据才会放入Application

application 还有一个重要的用处:可用于获取Web应用的配置参数。web.xml

注意:通过Web获取配置参数的方式,可以将一些配置信息放在web.xml文件中配置。
避免使用硬编码方式写在代码中,该种方式可以更好的程序的移植性。

config 对象:
config对象代表当前JSP页面的配置信息。但JSP页面通常无须配置。因此也就不存在配置信息。
所以JSP页面比较少用该对象。但是Servlet中则用处相对较大,因为Servelt需要在web.xml
文件中进行配置。

exception 对象:
exception对象是Throwable的实例,代表JSP脚本中产生的错误和异常。是JSP页面异常机制的
一部分。
在JSP脚本中无须处理异常。事实上,JSP脚本包含的所有的可能出现的异常都交给错误页面处理。

注意:exception 对象仅在异常处理页面中有效,通过异常处理结构可以看出。
注意:由于只有JSP脚本,输出表达式才会对应于_jspService()方法里的代码。所以这两个
部分的代码无须关心异常。但是在JSP的声明部分依然需要处理异常。
JSP异常处理机制对JSP的声明不起作用。

注意:在异常处理的页面中,应该在page指令中isErrorPage添加上并且设置为true,
只有该属性设置为true时,才可以访问exception内置对象。
七、
out: 其实就是输出流。通常用于输出变量的值。
注意:<%=> 本质等于 out.write() 输出表达式

pageContext: 该对象表示页面上下文,用于访问对象之间共享数据。

上下文:当一个页面需要访问其他页面声明的变量等参数的时候,该行为
动作就是上下文。

getAttributesScope() 返回属性范围
1 为page
2 为request
3 为session
4 为application

pageContext还可以用于其他内置对象:
1、servletRequest getRequest(): 获取request对象
2、servletResponse getRepsonse(): 获取response对象
3、servletConfig getServletConfig(): 获取config对象
4、HttpSession getSession() 获取session对象

request 对象是JSP重要的对象。每个request都会是一个用户的请求。
这个请求里面包含了所有的用户需要传递的参数。
request 重要的特性:可以操作表示一个request请求范围。
所有的web应用都会有请求与响应,没有请求与响应就没有web开发!

request和response 是HTTPRequest HTTPResponse的请求实例操作。

函数:
String getParameter("参数名") 获取提交请求的参数值。
Map getParameterMap() 获取所有请求参数和参数值的Map对象。
String[] getParameterValues("参数名") 获取提交请求的参数值的集合。

HttpServletRequest 函数:
String getHeader("参数名") 根据请求参数获取请求头。
java.util.Enumeration<String> getHeaderNames() 根据所有获取请求头名。
int getIntHeader(String name) 获取请求头并转成整数。
Get 和 Post 区别需要记牢!

注意:不是每个表单都会生成请求参数,特别是post不会生成浏览器的请求参数。
有以下几点需要考虑:
1、表单中,每个name属性都对应一个参数。
2、表单中,多个相同的name属性可以对应多个值。
3、表单中,name表示参数名,value表示参数值。
4、表单中,如果默认传值的参数,不要显示,考虑用hidden。

setCharacterEncoding("UTF-8"); 设置request字符集。
一般在web开发,只要不涉及到国际化。只需要知道2个字符集:
1、UTF-8
2、GBK

注意:request 除了可以接受参数,识别请求以外,还有一个功能就是
可以执行forward和include。也就是可以代替jsp所提供的编译指令。

response: 代表服务端的响应。基本上大部分时间服务器无须使用response。
因为可以直接使用更简单的out。out就是代表输出流。
HttpResponse
1、response 可以生成非字符串响应。
2、response 重定向。
注意:重定向 其实就相当于发送了二次请求。
重定向:sendRedict(String path)

注意:重定向会丢失所有的请求参数,使用重定向效果。
和在浏览器的地址栏重新输入没有任何区别。

从表面上看,forwar动作和redirect重定向行为有些相似。
它们都可以将请求传递到另一个页面上。但是实际还是有差异的。

forward( 转发,前进 )          redirect(重定向)
1、执行forward后依然上一次请求     1、执行redirect生成二次请求

2、forward的目标页面可以访问原来  2、redirect目标页面不能访问原来的请求参数。
的请求参数,因为依然在一个页面一次        request内参数全部丢失。
请求。所有request内参数都存在。

3、forward浏览器url不会改变         3、既然是重定向,当然会改变。

cookie/session

Cookie 时常是用来表示或者记录网站的数据。比如用户购物车。
Session 一般是存放在服务器的。用户每次访问网站的时候,
都会携带cookie,网站后台可根据携带cookie找到session。
Cookie和Session的最大不同之处在于,session会随着浏览器
的关闭而消失。Cookie会保留一段时间,具体时间看设置。

众所周知,Cookie会很大安全隐患。因此在有大部分浏览器,需要你
支持使用Cookie。
注意:增加Cookie也是repsonse内置的对象完成。
提供如下相关方法:
1、addCookie( Cookie对象 );

操作:
1、创建Cookie实例
2、设置Cookie生存周期
3、可向客户端写入Cookie

注意:使用Cookie对象必须设置生存周期,
否则随着浏览器关闭会消失。

注意:当在Cookie中设置中文的时候,需要URLEncoder 和 URLDecoder设置。
否则会报错!

session:session 是对象是一个很有用的对象,它代表了一次会话所存储的值。
会话的意思是:从客户端请求服务器开始,到客户端断开服务器位置,这个过程
就是一个完整的对象。

session对象是HttpSession的实例:
1、setAttribute("参数名","参数值");
2、getAttribute("参数名");

注意:session一般是用于存放用户需要完成的会话。比如登录成功的ID
,比如验证码等信息。
session属性值可以是任何可序列化的Java对象。
八、Servlet
Servlet:

JSP的本质就是Servlet。一般编译的流程就是把编写好的JSP页面
部署到web容器会将JSP页面编译成相对应Servlet。
但是如果需要直接使用Servlet的坏处:写前端极其麻烦。
Servlet是标准的Java类。

Servlet其实也是一个特殊类,这个类必须继承HttpServlet。
注意:每一个Servlet都可以提供不同方法用于响应客户端的请求。
*doGet 用于用户的Get请求
*doPost 用于用户的Post请求
doPut 用于用户的Put请求
doDelete 用于用户Delete请求

事实上,Get和Post在客户端才会经常用到。
如果Servlet需要响应这4种方法,可以考虑重写上述方法。
注意:大部分Servlet请求响应基本完全一样。
service()即可响应客户端的请求。
另外,HttpServlet还包含了两个方法:
1、init(ServletConfig config); 创建Servlet的时候,初始化的方法。
2、destroy(); 销毁Servlet实例时,自动调用该方法回收资源。

注意:init()和destroy()两个方法,除非在初始化一定要去完成的事情。
否则不建议重写。

Servlet和JSP的区别:
1、Servlet没有内置对象,原来JSP的内置对象通常必须根据程序创建。
2、对于静态HTML的标签,Servlet输出流必须逐个输出。
其实JSP就是Servlet的一种简化写法。

注意:普通的Servlet中的service作用就是JSP源码中的_jspService()方法。
因此原JSP页面的JSP脚本和JSP静态页面内容,在普通中的Servlet中就是service方法
中的输出片段。原JSP声明部分的,对应Sevlet中的定义成员变量或方法。

注意:@WebServlet 使用方式是Servlet3.0以后的注解方法。
目的是为了简化配置操作。
1、asyncSupported 指定该Servlet是否支持异步操作。
2、displayName  指定该 Servlet的显示名。
3、initParams  用于为这个Servlet配置参数。
4、loadOnStartup 用于将Servlet配置成load-on-start
的servlet。
5、name  指对应servlet的名称
6、urlPatterns  指Servlet处理的URL。
如果你打算使用注解配置Servlet。有以下几点需要注意:
1、不要在web.xml文件的根元素(<web-app.../>)
中指定metadata-complete="true"
2、不要在web.xml配置这个Servlet
如果你打算使用web.xml来配置Servlet。有以下几点需要注意:
1、配置Servlet的名字:对应web.xml文件中的<servlet/>元素
2、配置Servlet的URL: 对应web.xml中的<servlet-mapping/>元素
注意:servlet-mapping是可选的。也就是说如果没有配置Servlet
的URL,也不影响正常运行。
九、Servlet生命周期
load-on-startup: 通常Web启动时立即创建的Servlet。
配置 load-on-startup 的Servlet 有两种方式:
1、web.xml 文件通过<servlet></servlet>中的配置一个
<load-on-startup>子元素进行配置。
2、通过注解方式@WebServlet 指定属性load-on-startup.

注意:load-on-stratup 或者 loadOnStartup 属性只接收一个
整型值,这个整型越小,Servlet实例化的优先级越高。

Servlet的配置参数:
通常配置Servlet时候,需要额外的增加一些参数。一般是需要加入到文件中。
有以下两种方法:
1、通过web.xml中的<servlet></servlet>中的init-param
2、通过注解方式,initParams方式。
分享到:
评论

相关推荐

    jsp课程总结

    "jsp课程总结" JSP(JavaServer Page)是一种基于 Java Server 以及整个 Java 体系的 Web 开发技术,能够建立动态的、高性能的、安全的、跨平台的先进动态网站。JSP 技术的核心是将 Java 代码嵌入到 HTML 页面中,...

    登录注册的jsp总结

    4. **JSP动作(JSP Actions)**:如`&lt;jsp:include&gt;`和`&lt;jsp:forward&gt;`等,但示例中未使用。 5. **EL(Expression Language)**:虽然示例中未使用,但EL通常用于简化JSP页面中的数据访问。 6. **JSTL(JavaServer ...

    servlet与jsp总结

    自己总结的servlet与jsp部分 希望对大家有所帮助

    jsp总结关于jsp

    ### JSP知识点总结 #### 1. JSP简介 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于创建动态网页。它结合了HTML标记和Java代码,使得开发者可以在静态网页的基础上添加动态内容。JSP具有以下...

    jsp总结代码

    jsp总结代码,配置Tomcat,jsp的组成 (定义:在html中嵌入java脚本代码)

    jsp内置对象ppt总结

    jsp基础的学习资料,适合初学者,ppt形式,可以很容易学会jsp jsp基础的学习资料,适合初学者

    jsp学习总结适合学生看的

    **JSP 学习总结** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,以实现服务器端的程序逻辑。对于初学者来说,掌握JSP的基础知识和核心概念至关重要。 ### JSP 开发Web应用系统 ...

    jsp实现教室管理系统

    总结,利用JSP开发教室管理系统,我们需要结合Servlet、Java Bean、JDBC、数据库以及前端技术,实现用户交互、数据处理和业务逻辑。在实际开发过程中,还要注意安全性、性能优化以及代码规范,以构建出高效、稳定的...

    很全面的jsp总结大全

    jsp小结,温故而知新页面语言: 静态:html 动态:asp,php,jsp 1.jsp运行环境 动态的代码 必须有服务器来解析这些代码 2.服务器tomcat 免费服务器

    jsp 知识总结1

    **JSP知识总结1** **一、静态页面基础** 1. **HTML文档结构**:HTML文档通常由开始标记`&lt;html&gt;`、头部标记`&lt;head&gt;`、主体标记`&lt;body&gt;`以及结束标记`&lt;/html&gt;`组成。 2. **排版标记**:包括标题标记如`&lt;hn&gt;&lt;/hn&gt;`(n...

    jsp期末概念总结

    【JSP期末概念总结】 JSP(JavaServer Pages)是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页的创建。JSP文件在服务器上被编译成Servlet类,然后执行生成动态内容。JSP的核心在于将...

    JSP学习 入门总结 语法总结 用法总结

    JSP(Java Server Pages)是Java技术中用于创建动态网页的一种标准,它是J2EE(Java 2 Platform, Enterprise Edition)的一部分。JSP的核心在于它能够将静态HTML内容与Java代码相结合,允许开发者在服务器端生成HTML...

    JSP开发模式,jstl标签库(用于在jsp中写逻辑功能页面)el,jstl,jsp总结.emmx

    使用mindmaster打开

    JSP与Servlet 技术总结

    JSP & Servlet 技术总结 JSP技术总结 2 1. JSP页面元素构成 2 2. JSP脚本元素 2 3. 注释 2 4. JSP指令 2 5. JSP动作元素 3 6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向...

    jsp基本登录模块详细介绍

    JSP(JavaServer Pages)是一种基于Java的动态网页技术,常用于构建Web应用程序。在本文中,我们将深入探讨一个基本的JSP登录模块的实现,包括各个关键页面的功能和交互流程。 1. **检查Cookie页面(index.jsp)**: ...

    ACCP5.0 JSP(2)

    **ACCP5.0 JSP(2):深入理解与应用JSP开发Web应用系统** 在Web开发领域,JavaServer Pages (JSP) 是一种强大的技术,用于创建动态、交互式的网页。本教程将深入探讨JSP的核心概念,理论部分旨在帮助开发者掌握JSP...

    jsp 分页实现总结大全

    总结,JSP分页实现是一个涉及到数据库操作、服务器端逻辑和客户端展示的综合过程。开发者需要理解如何在后台处理分页逻辑,如何将数据传递给前端,以及如何在前端展示分页效果。掌握这些知识后,无论是开发大型网站...

    jsp Servlet总结

    jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结

Global site tag (gtag.js) - Google Analytics