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. ssh、scp免秘钥远程执行命令:expect

    首先安装expect # yum -y install expect 命令格式 # ./expect IP COMM    #expect是独立的工具,所以不能用sh来执行 1 2 3 4 5 6 7 ...

  2. 2017计算机学科夏令营上机考试-A判决素数个数

    A:判决素数个数 总时间限制:  1000ms 内存限制:  65536kB 描述 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y). 输入 两个整数X和Y(1 <= X,Y <= ...

  3. km算法入门

    本文知识均由笔者自学,文章有错误之处请不吝指出. 笔者刷数模题的时候有一道题考到了"二分图最大权分配",需要用到KM算法,但是书上对KM算法的介绍又臭又长,更何况有些同学" ...

  4. Mybatis(三)返回值

    Mybatis返回值 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则 ...

  5. MySQL学习——基本命令(1)

    MySQL添加新用户.为用户创建数据库.为新用户分配权限 参考博客http://blog.csdn.net/u013216667/article/details/70158452 一.登录MySQL ...

  6. 服务器获取浏览器发送请求中的cookies,选取自己需要的cookie

    String cookieName = “userID”; // 设置自己需要的cookie名 Cookie cookies[] = request.getCookies(); // 获取请求中的所有 ...

  7. HDU1248--完全背包

    寒冰王座 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. NYOJ 2357: 插塔憋憋乐 贪心

    2357: 插塔憋憋乐 时间限制: 1 Sec  内存限制: 128 MB 提交: 82  解决: 18 [提交][状态][讨论版] 题目描述 众所不知,LLM是一位红警3大佬,打的非常厉害,但是曾经 ...

  9. spring mvc 复杂参数注入

    过了这么久,又重新把博客拾起来了 来上海工作也已经有将近两周的时间了, 今天在整理项目的时候,遇到了一个关于参数注入的问题 背景: 我的开发前台用的是extjs4,在对后台spring mvc提交表单 ...

  10. 分布式监控系统Zabbix3.2对数据库的连接数预警

    在前篇分布式监控系统Zabbix3.2监控数据库的连接数 中已经对数据库的端口3306进行了监控,可以看到数据库的连接数历史变化有高有低,那如果达到了数据库连接数的阀值是不是主动通知给运维人员去检查问 ...