JSP

  JSP全名为Java Server Pages,即java服务器页面,其根本是一个简化的Servlet设计。它是在传统的网页HTML文件中插入Java代码,从而形成JSP文件。

  JSP注释分为显式(客户端可以看见)和隐式注释(不可见)。

    显式:  <!-- -->

    隐式:  //   、  /**/   、  <%--  --%>

JSP编译指令

page

  定义一个jsp页面的相关属性。<%@page 属性=“内容”%>常用importpageEncodingerrorPage/isErrorPage

  以下是会产生异常的页面的配置:

<%@pagelanguage="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>

  exception的实例代表其他页面的异常和错误。只有当页面是错误处理页面时,即isErrorPage为true时,该对象才可以使用。

  errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到errorPage指定的页面,没必要给errorPage再设置一个errorPage。所以当errorPage属性存在时,isErrorPage属性值为false。

含有isErrorPage属性表示当前页面是处理异常的页面,不是会产生异常的页面。

include

  静态包含:<%@ include file=”” %>

  静态包含中实际上是将所包含的文件内容导入目标页面,然后再一起进行编译,最后再将一份整体的内容展现给用户,属于先包含,后编译。

  动态包含:<jsp:include page=””>

  动态包含语句可以自动区分被包含的页面是静态还是动态。如果是静态页面,则与静态包含一样,将内容包含进来处理,如果是动态页面,可以先进行动态地处理,然后再将处理后的结果包含进来。

taglib

  用于定义和访问自定义标签

JSP内置对象

pageContext

JSP页面容器

request

得到用户的请求信息

response

服务器向客户端的回应信息

session

保存每一个用户的信息

application

所有用户的共享信息

config

服务器配置,可以获得初始化参数

out

页面输出

page

从页面中表示出来的一个Servlet实例

exception

JSP页面所发生的异常,在错误页面中起作用

 

4种属性范围

  page:只在一个页面中保存属性,跳转之后无效。

  request:在一次请求中保存属性,服务器跳转后仍然有效。

  session:在一次回话范围中保存,无论何种跳转都可以使用,但是新开浏览器失效。

  application:在整个服务器上保存,所有用户都可以使用。

  操作属性的方法如下:

public void setAttribute(String name ,Object value)
public Object getAttribute(String name)
public void removeAttribute(String name)

request对象 

  接收客户端发送而来的请求信息。

  request是javax.servlet.http.HttpServletRequest接口的实例化对象,HttpServlet是ServletRequest的子接口。

  常用方法:

public String getParameter(String name)
public String[] getParameterValues(String name)
public Httpsession getSession()
//获得上下文资源路径
public String getContextPath()
//解决乱码
request.setCharacterEncoding(“utf-8”) 

response对象

  对客户端的请求进行回应,将Web服务器处理后的结果发回给客户端。

  response是javax.servlet.http.HttpServletResponse接口的实例化对象,HttpServlet是ServletResponse的子接口。

  常用方法

//重定向
public void sendRedirect(String location) throws IOException

Session对象

  session最主要的用处是完成用户的登录,注销等常见功能,每一个Session对象都表示不同的访问用户,session对象是javax.servlet.http.HttpSession接口的实例化对象,所以session只能应用在HTTP协议中。

  常用方法:

public String getId()
//让session失效
public void invalidate()

application对象

  application对象是javax.servlet.ServletContext接口的实例化对象。

  常用方法:

//得到虚拟目录对应的绝对路径
String getRealPath(String Path)

config对象

  Web目录中必须存在一个WEB-INF文件夹,该文件夹无法被外部所看见,安全性最高。因为WEB-INF中的文件太安全,外面永远无法访问,可以通过一个映射进行操作。

  例如将index.jsp放在WEB-INF目录中,外部将无法访问到,则需要在web.xml文件中进行配置

<servlet>
  <servlet-name>hello</servlet-name>
  <jsp-file>/WEB-INF/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

  上面配置表示,将/WEB-INF/index.jsp的文件映射成为一个/hello的访问路径,程序会自动根据<servlet-mapping>节点中配置的<servlet-name>找到对应的<servlet>节点,并找到<jsp-file>所指定的真是文件路径以执行程序。

  config对象是javax.servlet.ServletConfig接口的实例化对象,主要功能是取得一些初始化的配置信息。

  常用方法:

public String getInitParameter(String name)

在<servlet>中的配置

<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>

pageContext对象

  pageConext对象是javax.servlet.jsp.PageContext类的实例,主要表示一个页面的上下文。

  之前的request、response、config、application、<jsp:include>和<jsp:forward>等操作实际上都可以在pageContext对象中完成。

JSP动作指令

jsp:forward

执行页面转向,将请求的处理转发到下一个页面

jsp:param

用于传递参数,必须与其他支持参数标签一起使用

jsp:include

动态引入一个JSP页面

jsp:plugin

下载JavaBean或Applet到客户端执行

jsp:useBean

使用JavaBean

jsp:setProperty

修改JavaBean实例的属性值

jsp:getProperty

获取JavaBean实例的属性值

include

1、静态包含

   指令<%@include file = “abc.jsp” %>

  (1)两个jsp页面的<%@page contentType=“text/html;charset=”utf-8” %>应该保持一致。不能向被包含的jsp页面传递参数。

  (2)包含的jsp页面与被包含的jsp页面共用一个request内置对象。

  (3)将两个jsp文件合二为一,生成一个以包含页面命名的Servlet和class文件。

  (4)静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的。

  (5)用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面,直接将内容先包含后处理。

2、动态包含

  <jsp:include page=“abc.jsp”/>

(1)动态包含将两个jsp文件各自生成自己的Servlet和class文件。

(2)动态包含只有在执行到它的时候才加载,所以才叫动态包含。

(3)动态include的结构是两者独立,直到输出时才合并。

转发和重定向

  转发(forward)

  静态

request.getRequestDispatcher(“main.jsp”).forward(request,response);

  动态

<jsp:forward page=“main.jsp”>

转发方法的调用者与被调用者之间共享相同的request 对象和response 对象,它们属于同一个访问请求和响应过程。转发到的页面能获取数据。

RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;

调用RequestDispatcher.forward方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

  重定向(redirect)

HttpServletResponse.sendRedirect(“main.jsp”);

  重定向方法调用者与被调用者使用各自的request 对象和response 对象,它们属于两个独立的访问请求和响应过程。重定向后的页面不能获取原请求存放的数据。

  HttpServletResponse.sendRedirect方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

  调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL。

区别

  jsp:forward动作执行的是强制性跳转,写在其后面的语句不会执行。而sendRedirect()方法跳转至页面后,还会执行后面的代码;

  jsp:forward动作是将page的值指定的页面直接送给IE。sendRedirect()方法是告诉IE要跳转页面,IE再自动调用其参数指定值的页面,其间经过三趟通讯;

转发

重定向

代码

RequestDispatcher.forward

<jsp:forward page=“main.jsp”>

HttpServletResponse.sendRedirect

url

url地址不会改变

初始的URL地址变成重定向的目标URL。

数据

转发到的页面能获取数据。

重定向后的页面不能获取原请求存放的数据。

请求

不会发送新的请求

发送了新的请求

后边语句

不会执行

会执行后面的代码

JSPServlet区别

联系:

  JSP是Servlet发展后期的产物,Servlet利用输出流动态生成整个HTML,开发效率低下。JSP是在HTML中插入java代码形成。

  主要用JSP来动态生成HTML文件,然后返回客户端显示。Servlet需要将整个页面作为结果返回时,通过调用jsp文件来实现。

区别:

(1)JSP是动态网页开发技术,是运行在服务器端的脚本语言,而Servlet是web服务器端程序技术。访问一个JSP页面时,服务器会将这个JSP编译后就变成了“类Servlet”(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP代码);

(2)JSP擅长表现于页面显示,Servlet更擅长于逻辑控制;

(3)Servlet中没有内置对象,JSP中的内置对象都是通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到;

(4)JSP修改后可以立即看到结果,不需要编译;Servlet需要编译;

(5)在标准的MVC架构中,Servlet作为Controller接受用户请求并转发给相应的Action处理,JSP作为View主要用来产生动态页面。

JavaBean

JavaBean是使用Java语言开发的一个可重用的组件,在JSP开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。

JavaBean满足的条件是:

  ①所有的类必须放在一个包中,web中没有包的类是不存在的。

  ②所有的类必须声明为public class,这样才能外部类访问。

  ③类中所有的属性都必须封装,使用private声明。提供相应的setter,getter方法

  ④至少存在一个无参构造方法。

web开发的标准目录结构

目录或文件名

作用

WEB ROOT

Web的根目录,一般虚拟目录直接指向此文件夹

WEB-INF

Web目录中最安全的文件夹,保存各种类、第三方jar包、配置文件

web.xml

Web的部署描述符

classes

保存所有的JavaBean,如果不存在,可以手工创建

lib

保存所有的第三方jar文件

tags

保存所有的标签文件

jsp

存放*.jsp文件,一般根据功能创建子文件夹

css

样式表文件的保存路径

images

存放所有的图片

<jsp:useBean>指令

与import语句一样,导入所需要的JavaBean

<jsp:useBean id=”实例化对象名” scope=”保存范围” class=”包.类名称”>

<jsp:setProperty>

设置属性

<jsp:setProperty name=”实例化对象名” property=”属性名称” value=”内容”>

JSP和JavaBean总结的更多相关文章

  1. jsp 以及javabean内省技术

    l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...

  2. JSP+Servlet+javabean+oracle实现页面多条件模糊查询

    之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...

  3. jsp学习---使用jsp和JavaBean实现超简单网页计算器

    一.需求 如题,用jsp实现一个超简单的网页计算器. 二.实现 1.效果图 1)初始界面: 2)随便输入两个数进行相乘: 3)当除数为零时提示报错: 2.代码 Calculator.java pack ...

  4. javaWeb 使用 jsp 和 javaBean 实现计算器功能

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  5. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  6. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  7. MVC jsp+servlet+javabean 连接Mysql数据库測试demo

    本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...

  8. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)

    在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...

  9. JSP共享javabean

    JavaBean是一种可重复使用,且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI)的javaBean:还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的jav ...

  10. jsp+servlet+javabean开发web项目

    一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...

随机推荐

  1. [动态规划]P1854 花店橱窗布置

    题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识 ...

  2. 将下载到本地的JAR包手动添加到Maven仓库

    <!-- https://mvnrepository.com/artifact/ojdbc/ojdbc --><!-- (参数一):下载到本地的ojdbc-10.2.0.4.0.ja ...

  3. bootstrap_table_class表格样式实例

    <div class="container"> <h2>表格</h2> <!--table标签级别的样式说明如下: ----.table ...

  4. 简易RPC框架-熔断降级机制

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. Unity塔防游戏开发

    Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...

  6. null与undefined的比较

    null在JavaScript中是关键字,它属于一个特殊的值,即空值. 而undefined它不是关键字,它表示未定义,属于预定义的全局变量. null == undefined 返回的是 true  ...

  7. 巧-微信公众号-操作返回键问题-angularjs开发 SPA

    在解决这个问题之前,一直处在很苦逼的状态,因为 现在绝大多数 前端模块都是 SPA 模式:所以由此而来出了许多的问题,当然我现在提的这个只是其中一个: 说一下解决方案: 1.技术栈 angularjs ...

  8. Thinkphp高仿陌陌网页直播

    此项目利用 TP+Redis+Nginx+nginx-rtmp-module+ffmpeg+HLS +Swoole 的架构方案 GitHub 地址:https://github.com/DOUBLE- ...

  9. 三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  10. 开源纯C#工控网关+组态软件(七)数据采集与归档

    一.   引子 在当前自动化.信息化.智能化的时代背景下,数据的作用日渐凸显.而工业发展到如今,科技含量和自动化水平均显著提高,但对数据的采集.利用才开始起步. 对工业企业而言,数据采集日益受到重视, ...