Java开发系列-JSP
概述
JSP是java 服务器页面,它运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下.

JSP主要作用是将内容的生成与页面相分离。
JSP脚本
JSP脚本就是在JSP编写Java代码。常见的三种脚本
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
/* Java代码 */
System.out.print("JSP脚本");
int i = 10;
%>
<!-- 转变成Servlet的代码
/* Java代码 */
System.out.print("JSP脚本");
int i = 10; -->
<%=
/* 后面不要添加封号 */
i
%>
<!-- 转变成Servlet的代码
out.print(i); -->
<%!
/* 声明成员 */
String name = "jake";
%>
<!-- 转变成Servlet的代码
public final class Hello_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
/* 声明成员 */
String name = "jake";
} -->
El表达式达式语言
从jsp2.0开始,jsp的内置表达式语言,用来替代<%=..%>。常见的用法: 获取域中数据、执行运算、获取常见的web对象、调用java的方法。格式:${el表达式}
获取简单数据
格式:${pageScope | requestScope | sessionScope | applicationScope.属性名}
开发经常简写:
${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找
若查找不到,返回""
获取容器数据
- 获取数组中的数据
- ${域中的名称[index]}
- 获取list中的数据
- ${域中的名称[index]}
- 获取map中的数据
- ${域中的名称.键名}
JavaBean导航
首先javabean规范:
1. 必须是一个公共的具体的类 public class
2. 提供私有的字段 private String id;//id称之为字
3. 提供公共访问字段的方法 get|set|is方法
4. 提供一个无参的构造器
5. 一般实现序列化接口 serializable
获取JavaBean数据的el格式: ${域中javabean名称.bean属性}
El内置对象
JSP共有9大内置对象,对应的数据类型如下:
| JSP内置对象 | 类型 |
|---|---|
| out | JspWriter |
| request | HttpServletRequest |
| response | HttpServletResponse |
| session | HttpSession |
| exception | Throwable |
| page | Servlet(this) |
| config | ServletConfig |
| application | ServletContext |
| pageContext | PageContext |
其中有application、session、request、pageContext域对象的生命周期为:整个项目、一次会话、一次请求、一个页面。
pageContext作用可以操作其它域对象与获取其它内置对象
<%
// 操作其它内置域对象
/* request.setAttribute("username", "jake"); */
pageContext.setAttribute("rKey", "rValue", pageContext.REQUEST_SCOPE);
// 获取其内置对象
pageContext.getRequest();
pageContext.getResponse();
%>
JSP动作标签
请求转发
<!-- 请求转发 age="内部路径" -->
<jsp:forward page="/index.jsp"></jsp:forward>
注意:请求转发输入的路径是内部路径。
动态包含
动态包含:将被包含页面或者servlet的运行结果包含到当前页面中.
<jsp:include page="内部路径"></jsp:include>
JSP指令
JSP指令主要是用来声明jsp页面的一些属性和动作。格式:<%@指令名称 属性="值" 属性="值"%>。JSP指令主要分为三大类
- page:主要声明jsp页面的一些属性
- include:静态包含.
- taglib:导入标签库
注意:指令可以放在任意位置,一般都放在jsp页面最上面.
page

其中创建的属性:
- contentType
- 设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype
- pageEncoding
- 设置页面的编码
- 导入所需要的包
- contentType和pageEncoding联系:
- 若两者都出现的时候,各自使用各自的编码
- 若只出现一者,两个都使用出现的这个编码
- 若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1
page属性
language:当前jsp页面里面可以嵌套的语言
buffer:设置jsp页面的流的缓冲区的大小
autoFlush:是否自动刷新
extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类
session:设置jsp页面是否可以使用session内置对象
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面
若值为true,可以使用jsp页面的一个内置对象 exception
include指令
静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件.
格式:<%@include file="相对路径或者是内部路径" %>
taglib指令
taglib指令用于导入标签库。
格式:<%@taglib prefix="前缀名" uri="名称空间" %>
jstl
jsp标准的标签库语言,apache的用来替代java脚本。通常我们是使用其中的核心类库core。
在使用需要先导入jar包(jstl.jar和standard.jar)。其次在导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
c:if
格式:<c:if test="${el表达式}">满足的时候输出的内容</c:if>
<c:if test="${3>4 }">
3>4;
</c:if>
<c:if test="${3<4 }">
3<4;
</c:if>
c:forEach
<c:forEach begin="1" end="10" step="1" var="i">
${i }
</c:forEach>
<c:forEach begin="1" end="10" step="1" var="i" varStatus="vs">
<!-- 记录循环的次数 -->
${vs.count }
<!-- 当前遍历的内容 -->
${vs.current }
</c:forEach>
<%
// List
ArrayList list = new ArrayList();
list.add("jake");
list.add("rose");
list.add("jerry");
request.setAttribute("list", list);
%>
<c:forEach items="${requestScope.list }" var="i">
${i }
</c:forEach>
Java开发系列-JSP的更多相关文章
- 【java开发系列】—— JDK安装
前言 作为一个java开发者,安装JDK是不可避免的,但是配置路径却总是记不住,百度也有很多参考例子.这里仅仅当做以后参考的笔记记录. 说到JDK,就不得不提JRE.他们到底是什么呢? 通常我们进行j ...
- Java开发系列-文件上传
概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...
- 【java开发系列】—— struts2简单入门示例
前言 最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的. struts2其实就是为我们封装了servlet,简化了js ...
- 【java开发系列】—— 自定义注解
之前在开发中,就总纳闷,为什么继承接口时,会出现@Override注解,有时候还会提示写注解@SuppressWarnings? 原来这是java特有的特性,注解! 那么什么是注解呢? 注解就是某种注 ...
- 【java开发系列】—— Tomcat编译报错
由于之前Eclipse里面有一个可移植性的web工程,但是在我很久没用后,再次登录这个IDE的时候就发现了问题. 首先,我的电脑里面有两个版本的JDK,1.6和1.7.两个版本的Tomcat6和7以及 ...
- Java开发系列-JDBC
概述 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和 ...
- java开发系列-服务器tomcat
概述 tomcat是Apache组织提供的,中小型的免费的支持Servlet和JSP规范的服务器. tomcat安装配置 下载 官方下载地址 下载,绿色版直接解压到指定目录就好. 启动Tomcat 双 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- 【java开发系列】—— 集合使用方法
一.首先看一下集合的框架图: 由于collection也继承了Iterator和comparable接口,因此我们可以使用Iterator来遍历元素,也可以通过自定义compareTo函数来重新编写自 ...
随机推荐
- 牛客多校第十场 D Han Xin and His Troops 中国剩余定理
题意: 韩信有若干个兵,给定你若干个模数和余数,再给你一个1e18以内的范围限制,求解同余方程组,如果无解,输出“他一定在撒谎”,如果最小解超出范围限制,输出“他可能在撒谎”,否则输出最小解 注意:不 ...
- P1802 5倍经验日
P1802 5倍经验日 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉.干掉能拿不少经验的. 题目描述 现在absi20 ...
- Java-杂项-java.nio:java.nio
ylbtech-Java-杂项-java.nio:java.nio java.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新api(New IO) ,为所有 ...
- Delphi 2010 中的泛型
Delphi 2010 中的泛型 2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧! C++中的模板.C ...
- (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...
- 去除vim ^M符号
来自: https://zhidao.baidu.com/question/267905868.html 有两种情况,会出现打开的文件都显示^M符号:1. vim被配置为fileformat=unix ...
- python 18 函数基础二
转自 http://www.cnblogs.com/BeginMan/p/3173328.html 一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装 ...
- 4-MySQL拆分表
如上图,将goods表中的cate_name字段拆分一个商品分类表goods_cates,步骤如下: 1,创建商品分类表-goods_cates; create table goods_cates( ...
- eclipse新建maven项目和聚合项目
1.new maven project : next 2.勾选 create a simple project : next 3.Group Id:项目的包路径 如com.jiayou.zjl, ...
- D3.js的基础部分之数组的处理 集合(Set)(v3版本)
数组的处理 之 集合(set) 集合(Set)是数学中常用的概念,表示具有某种特定性质的事物的总体.集合里的项叫做元素.集合的相关方法有: d3.set([array]) //使用数组来构建集合, ...