JSP

2018-12-21  本文已影响0人  微笑中的你

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

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

jsp 常见语法

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

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

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


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

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

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

jsp 常见指令

用来设置jsp页面相关信息,以及用于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表达式
<body>
 <%@ include file="/header.jsp" %>
    <h1>主体</h1>
 <%@ include file="/footer.jsp" %>
</body>

标签动作
隐式对象

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个库:

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>
上一篇下一篇

猜你喜欢

热点阅读