JSP

Java Server Pages java服务器页面
是在传统的HTML文件中插入 Java程序段和JSP标记。
其根本是一个简化的Servlet。

jsp文件在第一次被访问时会被web容器翻译成servlet。

  • 第一次访问 index.jsp
  • index_jsp.java
  • 翻译成 index_jsp.class运行
  • 可以在 tomcat的work目录中找到。
  • 下一次访问时,如果内容发生了变化,会重新翻译加载

jsp 常见语法

 <% java 代码 %> 
java代码会被翻译到servlet中的service方法的内部

 <%= java 变量或表达式%>
会被翻译成service方法内部out.print();

 <%! java 代码 %>
会被翻译成 servlet 的成员内容


HTML 注释 在页面中的查看源码中可以看到
<!-- 这里是注释 -->

java 注释 jsp生成的servlet文件中有,页面看不到
/* 这里是注释 */
//单行注释

JSP注释 jsp生成的servlet文件中没有,页面看不到
<%-- 这里是注释 --%>

jsp 常见指令

用来设置jsp页面相关信息,以及用于jsp页面间的通信。

  • page 指令
    设置jsp页面相关信息
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

常见属性:
language 目前只支持java
contentType 用来指定jsp页面的MIME和编码格式,用分号隔开;
pageEncoding 用来设置文件的编码 默认为 ISO 8859-1 需修改为utf-8
import  在jsp页面中用来引入java中的package
session 指定当前页面是否能获取当前用户的session对象,默认为true。如果设置为  
            false,怎不能使用session对象,不然会报500错误。
errorPage 如果当前页面发送错误,网页会重定向到errorPage指定的页面
isErrorPage 允许错误处理
extends jsp页面生成的servlet继承于哪个类。
buffer 设置缓冲区的大小
autoFlush 是否自动刷新缓冲区
isThreadSafe 是否支持多线程访问,默认为true
info 设置jsp页面的介绍信息
isELIgnored 是否支持EL表达式
  • include 指令
    可以用来包含其它页面
    只生成一个java文件及class文件
<body>
 <%@ include file="/header.jsp" %>
    <h1>主体</h1>
 <%@ include file="/footer.jsp" %>
</body>

  • taglib 指令
    声明jsp文件中使用的标签库:jsp标准标签库,第三方标签库,自定义标签库
标签动作
  • 页面包含 动态包含 <jsp:include page="/header.jsp"></jsp:include> 生成多个java和class文件
  • 请求转发 <jsp:forward page="/footer.jsp"></jsp:forward>
隐式对象

jsp翻译成servlet时,servic方法中存在9个已初始化的对象

* request
得到用户请求信息对象

* response
服务器向客户端的响应对象

* final javax.servlet.jsp.PageContext pageContext

* javax.servlet.http.HttpSession session=null;
用来保存用户会话的信息

* final javax.servlet.ServletContext  application
所有用户的共享信息

* final javax.servlet.ServletConfig  config
服务器的配置,可以取得初始化参数

* javax.servlet.jsp.JspWriter  out=null;

* final java.lang.Object    page=this;
当前页面转换后的Servlet类的实例

* javax.servlet.jsp.JspWriter _jspx_out=null;

* javax.servlet.jsp.PageContext _jspx_page_context = null;

* exception 
表示页面发生异常,在错误页中才起作用。只有是错误页面的时候,才会有该对象
out

为什么ddd在最前面??

EL 表达式 Express Lanuage

代替jsp页面中脚本的编写
作用:获取四大域中的数据

<body>

<%
//pageContext 域
    pageContext.setAttribute("name", "张三------pageContext域");
    
//request 域
    request.setAttribute("age", "11--------request域");
    
//session 域
    session.setAttribute("address", "杭州---------session域");

//application域
    application.setAttribute("national", "中国-----------application域");
%>


姓名:${pageScope.name }
<br>
年龄:${requestScope.age }
<br>
地址:${sessionScope.address }
<br>
国籍:${applicationScope.national }

<br>
<hr>
<br>

<h1></h1> el简写  从四个域去查找,从小到大查找 </h1>
<br>
${name } <br>
${age } <br>
${address } <br>
${national } <br>

<br>
<hr>
<br>

${1+1 }
<br>
${empty name }
<br>

</body>

JSTL (JSP Standard Tag Library)jsp标准标签库

可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能
JSTL 有5个库:

  • core 核心库
  • i18N 国际化
  • SQL
  • XML
  • Functions
    使用,在lib中加入 jstl-1.2.jar,然后在jsp页面引入
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    jstl标签通常会在jsp页面中配合 EL 表达式使用
if 标签使用
<body>

<c:if test="${1==1 }">lxf</c:if>

</body>
foreach 标签使用
<hr>
<!-- 遍历字符串集合 -->
<%
    ArrayList<String> strList = new ArrayList<String>();
    strList.add("aaa");
    strList.add("bbb");
    strList.add("ccc");
    strList.add("ddd");
    
    pageContext.setAttribute("strList", strList);
%>
<c:forEach items="${strList }" var="str">
    ${str } <br>
</c:forEach>

<hr>
<!-- 遍历自定义对象集合 -->
<%
    ArrayList<User> userList = new ArrayList<User>();
    User user1 =new User();
    user1.setUsername("lisi");
    userList.add(user1);
    User user2 =new User();
    user2.setUsername("wangwu");
    userList.add(user2);
    User user3 =new User();
    user3.setUsername("chenliu");
    userList.add(user3);
    pageContext.setAttribute("userList", userList);
%>
<c:forEach items="${userList }" var="user">
    ${user.username } <br>
</c:forEach>

<hr>
<!-- 遍历Map -->
<%
    HashMap<String, String> person = new HashMap<String, String>();
    person.put("name", "phonegg");
    person.put("sex", "男");
    pageContext.setAttribute("person", person);
%>
<c:forEach items="${person }" var="entry">
    ${entry.key }:${entry.value } <br>
</c:forEach>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,449评论 0 13
  • 一、jsp介绍 jsp作用jsp全称java server pages(java服务器页面),本质是一个servl...
    圣贤与无赖阅读 1,250评论 0 14
  • 其他更多java基础文章:java基础学习(目录) 本章内容较多,全部认真看完可能需要一小时以上,建议边看边做笔记...
    Hiwayz阅读 1,314评论 0 10
  • 一、JSP基础 1.1什么是JSP JSP(Java ServerPage)是Java服务器端动态页面技术。是su...
    晨星资源阅读 1,150评论 0 6
  • JSP 基本结构JSP 页面组成:模板文本(HTML,XML,纯文本),JSP 元素;JSP 元素:脚本元素,指令...
    jslancer阅读 844评论 0 11