Content
- 什么是JSP
- JSP页面构成
- JSP指令.
- JSP动作
- JSP内置对象
什么是JSP?
-
JSP=Java Server Page(服务器端脚本语言)
-
JSP通过将动态代码嵌入到静态的HTML中,从而产生动态的输出
JSP页面构成
- HTML标记语言
- jsp标记:指令标记,动作标记
- 注释
- java代码,java表达式
java代码(脚本代码):完成业务处理,不能输出
<% Java代码 %>
<%
Date now = new Date();
String dateStr;
dateStr = String.format("%tY年%tm月%td日", now, now, now);
%>
java表达式
<%= 表达式 %>
圆周率是:<%=Math.PI %>
注释:
html注释
:用户查看源码可见
jsp注释 <%–注释内容–%>:被服务器端编译执行,不发送到客户端,用户不可见
java代码注释://单行注释
/*
多行注释
*/
JSP指令
page指令:定义整个页面的全局属性
- 一个JSP页面可包含多个page指令
- 设置的属性在JSP被服务器解析成Servlet时会转换为相应的Java程序代码
- 语法格式:<%@ page 属性1=“” 属性2=“”%>
- 常用属性:
Model:
<%@ page language=“java” pageEncoding=“utf-8” contentType=“text/html;charset=utf-8”%>
— 指定JSP页面使用的语言:
<%@ page language=“java” %>
— 导入Java类包:
<%@ page import=“java.util.*” %>
— 定义JSP页面的编码格式:
<%@ page pageEncoding=“utf-8”%>
— 设置JSP页面的MIME类型和字符编码:
<%@ page contentType=“text/html; charset=utf-8”%>
— 指定是否使用HTTP的session会话对象(默认值为true):
<%@ page session=“false”%>
— 设置out输出对象使用的缓冲区大小:
<%@ page buffer=“128kb”%>
注:默认大小是8kb,切单位只能使用kb。建议程序开发人员使用8的倍数16、32、64、128等作为该属性的属性值
include指令:插入文件(Java代码,HTML代码,JSP页面)
<%@ include file=“validate.jsp” %>
taglib指令:引用标签库
<%@ taglib prefix=“tagPrefix” uri=“tagURI” %>
prefix:指定标签的前缀
uri:指定标签库文件的存放位置。
引用JSTL:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
JSP动作
共有属性
- id:动作元素的唯一标识。动作元素创建的id值可以通过PageContext来调用
- scope:识别动作元素的生命周期。 属性值: page, request, session, application。
jsp:include
可以将另外一个文件的内容包含到当前JSP页面中。
被包含的文件内容可以是静态文本,也可以是动态代码。
<jsp:include page=“url” flush=“false|true” />
page:该属性用于指定被包含文件的相对路径。
flush:这是可选参数,它用于设置是否刷新缓冲区。默认值为false,如果设置为true,在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,然后再执行包含工作。
jsp:forward
请求转发标签,该标签可以将当前页面的请求转发给其它Web资源
例如另一个JSP页面、HTML页面、Servlet等
<jsp:forward page=“url”>
<jsp:param value=”” name=””/>
<jsp:param value=”” name=””/>
<jsp:param value=”” name=””/>
</jsp:forward>
jsp:forward VS include
jsp:forward动作标签:动态包含,JSP运行时才引入文件,可传参数,速度较慢
include指令的区别:静态包含,翻译成class文件时就引入文件,速度快
JSP内置对象
request页面请求对象
描述:获取客户端的输入信息。
中文乱码处理:
request.setCharacterEncoding(“UTF-8”);
应用1:获取请求参数
设置一个超链接
< a href=“delete.jsp?id=1”>删除< /a>
在delete.jsp中接收参数
<%
request.getParameter(“id”);
%>
注意:
在通过问号“?”来指定请求参数时,参数值不需要使用单引号或双引号括起来,包括字符型的参数。
技巧:
在通过问号“?”来指定请求参数时,可以同时指定多个参数,各参数间使用与符号“&”分隔即可。
应用2:获取表单提交信息
getParameter() //获取到客户端通过表单或url请求参数发送过来的参数值
getParameterValues() //将同名的参数一次性读入String类型的数组中
<form action="show.jsp" method="post">
<ul style="list-style: none; line-height: 30px">
<li>输入用户姓名:<input type="text" name="name" /><br /></li>
<li>选择性别:
<input name="sex" type="radio" value="男" />男
<input name="sex" type="radio" value="女" />女
</li>
<li>
选择密码提示问题:
<select name="question">
<option value="母亲生日">母亲生日</option>
<option value="宠物名称">宠物名称</option>
<option value="电脑配置">电脑配置</option>
</select>
</li>
<li>请输入问题答案:<input type="text" name="key" /></li>
<li>
请选择个人爱好:
<div style="width: 400px">
<input name="like" type="checkbox" value="唱歌跳舞" />唱歌跳舞
<input name="like" type="checkbox" value="上网冲浪" />上网冲浪
<input name="like" type="checkbox" value="户外登山" />户外登山<br />
<input name="like" type="checkbox" value="体育运动" />体育运动
<input name="like" type="checkbox" value="读书看报" />读书看报
<input name="like" type="checkbox" value="欣赏电影" />欣赏电影
</div>
</li>
<li><input type="submit" value="提交" /></li>
</ul>
</form>
<ul style="list-style:none; line-height:30px">
<li>用户姓名:<%=(request.getParameter("name")%></li>
<li>性别:<%=request.getParameter("sex") %></li>
个人爱好:
<%
String[] like =request.getParameterValues("like");
for(int i =0;i<like.length;i++){
%>
<%= like[i].getBytes("utf-8")+" " %>
<% }
%>
</li>
</ul>
在作用域中管理属性
<%
request.setAttribute("date",new Date()); //添加一个属性
%>
<ul style="line-height: 24px;">
<li>获取date属性:<%=request.getAttribute("date") %></li>
<%request.removeAttribute("date"); %> <!-- 将属性删除 -->
<li>删除后再获取date属性:<%=request.getAttribute("date") %></li>
</ul>
获取cookie
Standing -by
response客户端响应对象
页面重定向
response.sendRedirect(“www.baidu.com”);
设置输出缓冲
设置缓冲区的大小为32KB
response.setBufferSize(32);
关于缓冲区
服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,
当满足以下三种情况之一,就会把缓冲区的内容写到客户端。
- JSP页面的输出信息已经全部写入到了缓冲区。
- 缓冲区已满。
- 在JSP页面中,调用了response对象的flushbuffer()方法或out对象的flush()方法。
处理HTTP 文件头
- 设置页面自动刷新(每隔10s自动刷新)
<%
response.setHeader(“refresh”,“10”);
%> - 定时跳转(5s后自动跳转)
<%
response.setHeader(“refresh”,“5;URL=login.jsp”);
%>
session会话对象
存储或读取客户相关的信息
session.setAttribute(“username”,“root”);
getAttribute()方法的返回值是Object类型
String user=(String)session.getAttribute(“username”); //强制类型转
String user1=session.getAttribute(“username”).toString(); //调用toString()方法
application 对象(应用程序初始化参数)
application对象保存所有应用程序中的公有数据。
它在服务器启动时自动创建,在服务器停止时销毁。
当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。
设置参数:
应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml文件中通过标记配置应用程序初始化参数。例如,在web.xml文件中配置连接MySQL数据库所需的url参数,可以使用下面的代码:
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/db_database</param-value>
</context-param>
</web-app>
读取参数:
application.getInitParameter(“url”);
getAttributeNames()方法
该方法用于返回所有已定义的应用程序初始化参数名的枚举。
<%@ page import="java.util.*" %>
<%
Enumeration enema=application.getInitParameterNames(); //获取全部初始化参数
while(enema.hasMoreElements()){
String name=(String)enema.nextElement(); //获取参数名
String value=application.getInitParameter(name); //获取参数值
out.println(name+":"); //输出参数名
out.println(value); //输出参数值
}
%>
管理应用程序环境属性
getAttributeNames():获得所有application对象使用的属性名。
getAttribute(String name):从application对象中获取指定对象名。
setAttribute(String key,Object obj):使用指定名称和指定对象在application对象中进行关联。
removeAttribute(String name):从application对象中去掉指定名称的属性。