JSP

JSP全称是Java Server Pages。JSP实际上就是Servlet。

JSP原理:JSP会被Tomcat翻译成一个Servlet

JSP语法

1)JSP的Java脚本表达式

作用:输出数据到页面上

语法:<%=表达式%>

2)JSP的Java脚本片段(实际开发中,应做到JSP中不能出现一行Java脚本片段)

作用:书写Java代码逻辑

语法:<%

语句1;

语句2;

%>

原理:其中的语句会原封不动的被服务器翻译到对应的Servlet的service方法中。

3)JSP的声明

作用:定义类的成员

语法:<%!

Java代码

%>

4)JSP的注释:

作用:注释Java脚本代码

语法:<%--这是注释--%>

JSP的指令:给JSP引擎用的(服务器用的)

基本语法格式:<%@ 指令名称 属性1="值1" 属性2="值2" %>

作用:告诉服务器,该如何处理JSP中除了指令之外的内容。

1.page

作用:定义JSP页面的各种属性

属性:language:指示JSP页面中使用脚本语言

extends:指示JSP对应的Servlet类的父类。不要修改

import:导入JSP中的Java脚本使用到的类或包。

JSP引擎自动导入以下包中的类:

javax.servlet.*

javax.servlet.http.*

javax.servlet.jsp.*

主要:一个import属性可以导入多个包,用逗号分隔。

session:指示JSP页面是否创建HttpSession对象。默认值是true,创建

buffer:指示JSP用的输出流的缓存大小。默认值是8KB.

autoFlush:自动刷新输出流的缓存

isThreadSafe:指示页面是否是线程安全的(过时的)。默认是true(true不安全。)

errorPage:指示当前页面出错后转向的页面

目标页面如果以"/"(当前应用)就是绝对路径。

配置全局错误提示页面:

web.xml

<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>

eg:

1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/error.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> </head>
<body>
<%
int i = 100/0;
%>
</body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> </head>
<body>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
<h1>对不起!服务器忙!</h1>
</body>
</html>

isErrorPage:指示当前页面是否产生Exception对象。

contentType:指定当前页面的MIME类型。作用与Servlet中的response.setContentType()作                               用完全一致

pageEncoding:通知引擎读取JSP时采用的编码(因为要翻译)

还有contentType属性的作用。

isELIgnored:是否忽略EL表达式。${1+1}。默认值是false。

2.include(静态包含:开发中能用静的不用动的)

作用:包含其他的组件。

语法:<%include file=""%>file指定要包含的目标组件。路径如果以"/"(当前应用)就是绝对路径。

原理:把目标组件的内容加到源组件中,输出结果。

动态包含:采用动作元素:<jsp:include page=""/>路径如果以"/"(当前应用)就是绝对路。

3.taglib

作用:引入外部的标签

语法:<%@taglib uri="标签名称空间" prefix="前缀"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

JSP内置对象(9个JSP内置对象)

JSP的内置对象引用名称                                  对象的类型

request                                                     HttpServletRequest

response                                                   HttpServletResponse

session                                                     HttpSession

application                                                 ServletContext

config                                                       ServletConfig

page                                                         this(当前Servlet对象)

exception                                                  java.lang.Throwable

out                                                           JspWriter

pageContext                                              javax.servlet.jsp.PageContext

pageContex详解

1.本身是一个域对象。

同时还能操作其他三个域对象(pageContext、ServletRequest、HttpSession、ServletContext)

本身表示的域范围是本页面

void setAttribute(String name,Object value)

void removeAttribute(String name)

Object getAttribute(String name)

操作其他三个域对象

void setAttribute(String name,Object value,int scope)

void removeAttribute(String name,int scope)

Object getAttribute(String name,int scope)

参数int scope是由PageContext类提供的静态变量规定的。

PageContext.PAGE_SCOPE:页面范围(是PageContext本身中的那个Map,代号page)

PageContext.REQUEST_SCOPE:请求范围(是ServletRequest中的那个Map,代号request)

PageContext.SESSION_SCOPE:请求范围(是HttpSession中的那个Map,代号session)

PageContext.APPLICATION_SCOPE:请求范围(是ServletContext中的那个Map,代号application)

Object findAttribute(String name):依次按照page request session application范围搜索指定名称的对象,找到为止。

2、获取其他8个隐式对象

3、提供了转发和包含的方便方法

方法一(转发):

RequestDispatcher rd = request.getRequestDispatcher("/url");

rd.forward(request,response);

方法二(转发):

pageContext.forward("url");

包含:

pageContext.include("url");

四大域对象(两个资源之间互传数据)

JSP中隐式对象的名称            范围名称                            具体的类型

pageContext                     page                                 javax.servlet.jsp.PageContext

request                            request                             javax.servlet.ServletRequest

session                            session                              javax.servlet.http.HttpSession

application                        application                         javax.servlet.ServletContext

JSP常用的动作元素

<jsp:include/>

<jsp:forward/>

<jsp:param/>:在包含和转发时,利用该标签传递请求参数

JavaBean

JavaBean是一个遵循特殊写法的普通类

特殊写法:

1)必须有默认的构造方法

2)所有字段为私有的

3)提供共有的getter或setter

4)一般实现java.io.Serializable

应用场景:在企业级开发中,JavaBean是用来传递数据的。

JSP中操作JavaBean的动作元素

jsp:useBean

作用:用于在指定域范围内查找指定名称的JavaBean对象,找到了就直接使用;没有找到,创建一个,并放到指定的域范围内。

属性:

id:必须的。

class:JavaBean的完整类名

scope:域范围。默认是page范围。可选值:page、request、session、application

注意:如果该标签有主体内容,只有创建新对象时才会执行。

jsp:setProperty(必须先使用useBean)

作用:调用JavaBean的setter方法。还能自动类型转换,仅限基本类型

属性:

property:必须的。属性名称。

可以使用通配符*。使用前提是请求参数的名称与属性的名称完全一致。

name:必须的。哪个对象的?即jsp:useBean中的id的取值。

value:属性的取值。

param:请求参数名

jsp:getProperty

作用:调用JavaBean的getter方法。

property:必须的。属性的名称

name: 必须的。哪个对象的?即jsp:useBean中的id的取值。

eg:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head> <body>
<jsp:useBean id="person" class="cn.lsl.domain.Person" scope="page"></jsp:useBean>
<jsp:setProperty property="name" name="person" value="zhangsan" />
<jsp:setProperty property="gender" name="person" value="male" />
<jsp:setProperty property="married" name="person" value="false" />
<jsp:setProperty property="birthday" name="person" value="<%=new Date() %>" /> <jsp:getProperty property="name" name="person"/><br />
<jsp:getProperty property="gender" name="person"/><br />
<jsp:getProperty property="married" name="person"/><br />
<jsp:getProperty property="birthday" name="person"/><br />
</body>
</html>

利用请求参数名设置JavaBean的各种属性

<!-- http://localhost:8080/JSP/2.jsp?name=zhangsan&gender=male  -->
<jsp:setProperty property="name" name="person" param="name" />
<jsp:setProperty property="gender" name="person" param="gender" />

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. vS2010 列表控件 加入右键菜单

    1.首先,就需要信息加入权限控制,例如,下面的对话框弹出 2,例如以下图选择须要的消息响应,这里选择NM_RCLICK 消息. 3,加入例如以下代码 </pre><pre name= ...

  2. TLD跟踪算法优化(一)并行化

    才学疏浅,仅仅言片语,仅仅求志同道的朋友一起交流研究. 并行化不算是算法的改进,仅仅是追求执行的实时性. 简要列举一个样例: TLD算法的C++版本号源代码里: LKTracker::trackf2f ...

  3. Java初认识--环境搭建及基本数据类型

    一.JAVA语言的环境搭建 1.JRE(Java Runtime Environment):Java运行环境. 它包括Java虚拟机和Java程序所需的核心类库等. 2.JDK(Java Develo ...

  4. 所谓策略,我站在旁边看今天 神刻的样子O2O

    雕爷.何许人也? 卖牛腩的大叔? 卖精油的大爷?还是卖烤肉的家伙? 事实上以上答案都是肯定的,他就是阿芙精油,雕爷牛腩创业神话的缔造者.那么雕爷是怎样取得这种创业成功的呢?前段时间我还不清楚雕爷的厉害 ...

  5. hdu 4869 Task(馋)

    题目链接:hdu 4869 Task 题目大意:有n台机器,m个任务.每一个机器和任务都有有xi和yi.要求机器的xi.yi均大于等于任务的xi和yi才干运行任务. 每台机器一天仅仅能运行一个任务.要 ...

  6. [ACM] hdu 1671 Phone List (特里)

    Phone List Problem Description Given a list of phone numbers, determine if it is consistent in the s ...

  7. js+css3动态时钟-------Day66

    昨天,有一天招,宽带到底没装上.相当恼火,不过包了一天租新房,有很多想法下来,其中,率先实现了--动态时钟(它已上载的资源,一些粗略的全貌.汗...) 这里记录.这个看似简单的功能,以达到良好的,我在 ...

  8. 一个简单的dom查询函数

    var regid = /^#([\w-]*)$/, regClass = /^\.([\w-]*)$/, regName = /^(div|a|p|ul|li|input|select|docume ...

  9. GRIDDATA(表格)第二版

    JQUERY 插件开发——GRIDDATA(表格)第二版 开发背景 表格插件之前我也写个一篇,当时写那个插件的时候,我自己还没有总结出写插件的方法,虽然功能实现了,但是使用起来还是有点别扭的,并且需要 ...

  10. JS字符串数字互转

    JS是一种弱类型的脚本语言,为变量赋值是会自动转换为相应的类型,例如: var a = 1; alert(a + 1);//结果为2 自动识别为数字类型进行数学运算 var b = '1'; aler ...