JSP详解(一):页面构成、EL表达式
2016-12-10 16:36
302 查看
什么是JSP?
JSP:Java Server Pages,其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签Jsp是一种动态网页技术标准,也是JEE标准
Jsp与Servlet一样,是在服务器端执行的
jsp就是servlet,servlet不是jsp
常见动态网站开发技术对比
Jsp:Java平台,安全性高,适合做大型开发,企业级的web程序。适合做企业级web开发。电子银行、网上证劵交易所,中国移动网上营业厅,中国铁路在线订票系统Asp:.Net平台,简单易学。但是安全性以及跨平台性较差。asp.net托拉拽可视化开发,微软配套软件
Php:简单、高效、成本低、开发周期短,适合中小型企业的Web应用程序开发。
开发组合:LAMP(操作系统Linux+服务器TomCat+数据库MySql+PHP)
都是server page sp。
JSP页面元素的构成
静态内容:html元素小脚本:
<% 在这之中的都是小脚本 %>
注释:
除了html注释(客户端可见)外, 也有jsp注释<%-- jsp【注释】 --%>(客户端不可见), jsp脚本中的java注释 总共三种注释
指令:
<%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
声明
<%! //【声明】(声明函数和变量) String s ="zhangsan"; int add(int x, int y){ //计算x+y的值 return x+y; } %>
表达式
<!--【表达式】,不需要分号 --> 你好,<%=s %><br> x+y=<%=add(10,5) %><br>
sample:
<!-- 这是【指令】page,控制文档类型、编码、导入java类等 -->
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--
pageEncoding jsp文件本身的编码
contentType charset服务器发送给客户端时的内容编码
-->
<!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>jsp页面元素构成以及语法</title>
</head>
<body>
<h1>jsp页面元素的构成</h1>
<ul>
<li>静态内容</li>
<li>小脚本</li>
<li>注释</li>
<li>指令</li>
<li>声明</li>
<li>表达式</li>
</ul>
<h3>静态内容</h3>
<p>静态内容只html元素</p>
<%
// 在这之中的都是小脚本 ,小脚本的内容是java代码
%>
<!-- html 注释-->
html注释:客户端可见(查看源代码)<br>
<%-- jsp【注释】 --%>
JSP注释:客户端不可见<br>
<%
//jsp脚本注释(java注释)
/**/
%>
<%! //【声明】(声明函数和变量) String s ="zhangsan"; int add(int x, int y){ //计算x+y的值 return x+y; } %><br>
<!--【表达式】,不需要分号 --> 你好,<%=s %><br> x+y=<%=add(10,5) %><br>
</body>
</html>
指令
jsp指令有三种:page指令
include指令
taglib指令
page指令
功能:用来描述页面的一些属性language属性:指定脚本语言,只支持java
import属性:导入包的指令,唯一一个可以多次使用的属性,导入多包也可以用”,”分割包名
pageEncoding属性和contentType属性:
都是设置编码解码方式,但是,pageEncoding是jsp页面保存到硬盘上,编码的码表。而contentType代表服务器给客户端发送jsp数据时,这个jsp的解码表,这两个码表应该相同,否则可能会出现乱码的情况。
注意:在设置其中一个属性后,另一个属性的值也会变为这个属性的值,即服务器自动将码表转换一致。
autoFlush属性和buffer属性:jsp向浏览器输出内容,输出过程中,当缓冲区满了的时候,是否自动刷新出缓冲区中的数据。也可以使用buffer设置缓冲区的大小。具体查看内置out对象。
<%@ autoFlush="true" d700 buffer="8kb" %>
errorPage和isErrorPage:指定处理异常的页面,是否处理异常,具体请查看内置exception对象
如果出现异常,跳转到isErrorPage页面中 <% errorPage="/page/error.jsp" %>
设置当前页面为异常处理页面,会获得一个exception内置对象,用来接收异常。 <% isErrorPage="true" %>
正确的异常处理方式
上面的方式虽然可以使用,但是太过于繁琐了,我们可以在web.xml中根据http状态码设置转向页面。
<error-page> <error-code>404</error> <location>/page/error.jsp</location> </error-page>
只要出现了404错误,就会跳转到
error.jsp页面中去处理。
也可以根据异常作出相应的处理:
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/page/error.jsp</location> </error-page>
只要出现了
java.lang.Exception就跳转到
error.jsp页面
extends属性:继承属性,指定一个父类,必须是Servlet
info属性:指定jsp
getServletInfo的值
isELIgnored属性:EL表达式的开关,默认可以使用
session属性:boolean,是否使用session对象,如果为false,不能直接使用session内置对象
include指令
静态包含指令file属性:
<%@ include file="/page/child.jsp"%>
静态包含原理:
所以合并,处于同一个Java类,注意变量的声明
作用:
引入内容,合并页面
引入代码,调用被引入代码中的方法。
动态包含原理:
taglib指令
导入标签指令使用EL表达式,替代jsp表达式脚本
用来代替<%= %>表达式脚本的。
格式:
&{表达式}
主要用于四个域中取出数据(application,request,session,page),即简化getAttribute…等操作的。
比如,
<% request.setAttribute("name", "Feathers"); %> name为:${requestScope.name} <!-- 即可取出request域中key为name的值 -->
注意:
如果这样写
${name},不指定域,则会从小域到大域依次查找。
相关文章推荐
- JSP页面中EL表达式语言和jstl标签库的使用详解
- jsp页面中的EL表达式不被解析的问题
- JSP页面EL表达式使用的问题
- jsp页面的执行过程与servlet的生命周期详解
- 五种JSP页面跳转方法详解
- 五种JSP页面跳转方法详解
- JSP页面构成
- 主题:JSP页面EL表达式无效的问题
- JSP EL表达式详解(~~转载)
- struts2框架在jsp页面无法解析EL表达式的问题解决
- 五种JSP页面跳转方法详解(转:有用)
- 五种JSP页面跳转方法详解
- jstl+el表达式实现list在jsp页面的输出
- java辅导:五种JSP页面跳转方法详解
- JSP页面参数详解
- JSP页面EL表达式无效的问题
- 五种JSP页面跳转方法详解
- 五种JSP页面跳转方法详解
- jsp页面调用el表达式和spring hibernate struts 做页面展示
- 五种JSP页面跳转方法详解