JSP的简介:
JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的, 不同的是先由服务器编译部署成Servlet执行。
jsp运行过程:jsp --翻译成servlet --编译 --访问
JSP的脚本元素(3种):
- <!% %> :定义类、定义变量、定义方法(不常用)
- <%= %> :输出语句(输出到页面,不能拥有分号)
- <% %> :定义变量、语句
JSP 页面注释(3种):
1.JSP注释:<%-- … --%>,转化阶段消失,只能被开发人员看到
2.JAVA注释://、/**/、/***/,编译阶段消失
3.HTML注释:<!-- … -->
JSP 指令元素:
语法:<%@ 指定元素 属性名=属性值 %>
功能(有两点):
- 用于指示JSP执行某些步骤
- 用于指示JSP表现特定行为
指令元素的分类:
- page指令标记
- include指令标记
- taglib指令标记
page指令:用来定义JSP文件的全局属性 语法:<%@ page ...... %>”
注意:在JSP页面中,只有import可以出现多次,其它属性都只能出现一次
下面是page指令标记表格,可以设置page指令标记中的属性:
下面是实例代码,关于page指令标记的使用:
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="true" buffer="8kb" autoFlush="true"
errorPage="/jsp/error.jsp" isELIgnored="false"%>
include指令标记: 包含页面(页面布局) 静态包含语法 :<%@ include file=“filename” %>
filename 指的是(服务器端路径,没有项目名称);
静态包含的作用:在JSP页面中静态包含一个文件,同时由JSP解析包含的文件内容
include指令标记的实例代码:
<!-- 下面是 body.jsp的代码 ,包含了另外3个 jsp文件 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="/include/head.jsp" %>
<%@ include file="/include/menu.jsp" %>
<h3>网站的新闻(数据变化)</h3>
<%@ include file="/include/foot.jsp" %>
<%
%>
</body>
</html>
<!-- 下面是 head.jsp的代码 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h3>网站的LOGO</h3>
<!-- 下面是 menu.jsp的代码 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h3>网站的超链接</h3>
<!-- 下面是 foot.jsp的代码 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h3>网站的友情的链接</h3>
taglib指令标记:
taglib :引入标签库文件
语法:<%@ taglib %>
属性:
uri :引入标签库文件的名称
prifix :标签库文件的前缀名
JSP 内置对象:
主要讲下pagecontext对象,其他对象可以参考前面的博客;
pageContext对象:是一个域对象
功能:
1.向自己域中存取值(3种主要的方法)
Object getAttribute(String name)
void removeAttribute(String name)
void setAttribute(String name, Object value
2.向其他域中存取值:
*public abstract void setAttribute (String name,Object value,int scope) 向某个域中存值
public abstract Object getAttribute(String name,int scope) 向某个域中取值
public abstract Object findAttribute(String name) 按顺序在页面、请求、会话(如果有效)和应用程序范围中搜 索指定属性,并返回关联的值或 null。也就是从最小的域中开 始查找
3.可以获取其他8个对象
getException方法返回exception隐式对象 |
getPage方法返回page隐式对象 |
getRequest方法返回request隐式对象 |
getResponse方法返回response隐式对象 |
getServletConfig方法返回config隐式对象 |
getServletContext方法返回application隐式对象 |
getSession方法返回session隐式对象 |
getOut方法返回out隐式对象 |
JSP标签:
定义:JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
jsp常用标签:
<jsp:useBean> 使用一个ID和一个给定作用范围和同一ID的JavaBean相关联
<jsp:setProperty> 设置JavaBean的属性值
<jsp:getProperty> 取得JavaBean的属性值
<jsp:include> 文件包含(服务器端路径,没有项目名称)
<jsp:forward page=“转发路径”> 在JSP的页面中完成转发(服务器端路径,没有项目名称),将请求传递给另一个JSP页面(转发)。
<jsp:param>用来传递参数,可以写在<jsp:forward>中间 可以使用request.getParameter();来接收参数
下面是实例代码:
<jsp:useBean id="u" class="cn.study.bean.User"></jsp:useBean>
<!-- 如果属性多可以使用下面 -->
<%-- <%<jsp:setProperty property="*" name="u"/> %> --%>
<jsp:setProperty property="username" name="u"/>
<jsp:setProperty property="password" name="u"/>
<jsp:getProperty property="username" name="u"/>
<jsp:getProperty property="password" name="u"/>
<jsp:param value="" name=""/>
还有转发动作标签的示例代码:
下面是forward.jsp的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>JSP的动作标签</h4>
<jsp:forward page="/jsp/pageContext.jsp">
<jsp:param value="meimei" name="username"/>
</jsp:forward>
</body>
</html>
下面是pageContext.jsp的代码,在其中写了如何向其他4个域对象pageContext、request、session、application存取值:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=request.getParameter("username") %>
<h3>从其他域中存取值</h3>
<%
pageContext.setAttribute("name", "小明");
//下面这句等价于上面
pageContext.setAttribute("name", "小明", pageContext.PAGE_SCOPE);
request.setAttribute("name", "小龙");
//向request域中存入值
pageContext.setAttribute("name", "小龙", pageContext.REQUEST_SCOPE);
//向session域中存入值
pageContext.setAttribute("name", "张三", pageContext.SESSION_SCOPE);
//向application域中存入值
pageContext.setAttribute("name", "李四", pageContext.APPLICATION_SCOPE);
%>
<%=pageContext.getAttribute("name", pageContext.SESSION_SCOPE) %>
<%=session.getAttribute("name") %>
${ pageScope.name}
${ requestScope.name}
${ sessionScope.name}
${ applicationScope.name}
</body>
</html>
配置全局的错误页面
应该到web.xml中配置,配置代码如下
<!-- 配置全局错误页面 -->
<error-page>
<error-code>404</error-code>
<!-- 服务器端路径名称 -->
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
参考: 传智播客 www.itcast.cn