JSP和JavaBean
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的更多相关文章
- jsp 以及javabean内省技术
l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...
- JSP+Servlet+javabean+oracle实现页面多条件模糊查询
之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...
- jsp学习---使用jsp和JavaBean实现超简单网页计算器
一.需求 如题,用jsp实现一个超简单的网页计算器. 二.实现 1.效果图 1)初始界面: 2)随便输入两个数进行相乘: 3)当除数为零时提示报错: 2.代码 Calculator.java pack ...
- javaWeb 使用 jsp 和 javaBean 实现计算器功能
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- JSP中使用的模式——JSP+Servlet+JavaBean
上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...
- MVC jsp+servlet+javabean 连接Mysql数据库測试demo
本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...
- 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...
- JSP共享javabean
JavaBean是一种可重复使用,且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI)的javaBean:还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的jav ...
- jsp+servlet+javabean开发web项目
一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...
随机推荐
- windows+php5.5+apache2.4+tomcat+mod_jk配置
原因: 通常情况下apache执行的是80port,比方apache启动后执行localhost:80就能够出现It works页面,这里的80也能够不写,会默认的.而tomcat启动时默认的port ...
- 深入理解C指针之二:C内存管理
原文:深入理解C指针之二:C内存管理 内存管理对所有程序来说都很重要.有时候内存由运行时系统隐式的管理,比如为变量自动分配内存.在这种情况下,变量分配在它所处的函数的栈帧上(每个函数都有它自己的栈帧, ...
- AngularJS模块的详解
AngularJS模块的详解 在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规 ...
- Monkey源码分析之事件源
上一篇文章<Monkey源码分析之运行流程>给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图给 ...
- C语言连接Oracle
原文:C语言连接Oracle 最近在搞C语言连接Oracle.DB2数据库,现把C连接Oracle的文章总结下: 用C语言连接ORACLE数据库.有两个思路和目的 思路一)本地环境:UBUNTU 7. ...
- canvas绘制自定义的曲线,以椭圆为例,通俗易懂,童叟无欺
本篇文章,将讲述如何通过自定义的曲线函数,使用canvas的方式进行曲线的绘制. 为了通俗易懂,将以大家熟悉的椭圆曲线为例,进行椭圆的绘制.至于其他比较复杂的曲线,用户只需通过数学方式建立起曲线函数, ...
- c#分部类型详解
一.先看代码来理解 代码一 class ClassA { void A(){;} void B(){;} } 代码二 partial class ClassA { void A(){;} } part ...
- PL/SQL Developer 连接Oracle数据库详细配置方法
PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...
- jquery背景动画插件使用
在网页制作动画特效的时候,有时候想通过背景插入图片,然后通过控制背景显示的位置来实现一些动画效果,这样就不用使用绝对定位控制left和top来实现动画效果!但是jquery本身的动画函数是不支持背景动 ...
- Android项目--XML解析
对于xml文件,一般有两种解析方式: -----pull解析-------- -----Sax解析------- 如果xml文件是本地文件,那么就好说了 AssetManager assetManag ...