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文件

 <%@ include file="/header.jsp" %>
    

主体

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

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页面中脚本的编写
作用:获取四大域中的数据



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

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


姓名:${pageScope.name }

年龄:${requestScope.age }
地址:${sessionScope.address }
国籍:${applicationScope.national }


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



${1+1 }
${empty name }

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 标签使用


lxf


foreach 标签使用

<% ArrayList strList = new ArrayList(); strList.add("aaa"); strList.add("bbb"); strList.add("ccc"); strList.add("ddd"); pageContext.setAttribute("strList", strList); %> ${str }

<% ArrayList userList = new ArrayList(); 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); %> ${user.username }

<% HashMap person = new HashMap(); person.put("name", "phonegg"); person.put("sex", "男"); pageContext.setAttribute("person", person); %> ${entry.key }:${entry.value }

你可能感兴趣的:(JSP)