JSP相关
①语法格式 <%声明变量%>
指令----<%@ name 属性1 = "属性值1" 属性2 = "属性值2" ... %>
JSP三大常用指令
page 针对当前页面进行设置
include 用于包含另一个页面
taglib 定义和访问自定义标签
<% page errorPage="错误处理页面"%>
<%@ include%>--删除多余<html,head,body>标签
<jsp:include page="url" />标签,效率较低
<jsp:forward page="url" />跳转
<jsp:param name="参数名" value="参数值" />
以键值对的形式传递参数数据,本身不能单独使用,做子标签
②JSP 9大内置对象
内置对象 类型
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
pageContext javax.servlet.jsp.PageContext
session javax.servlet.http.HttpSession
application javax.servlet.jsp.ServletContext
out javax.servlet.jsp.JspWriter
config javax.servlet.ServletConfig
page java.lang.Object
exception java.lang.Throwable
1、request
---getParameter(name);获得参数名为name参数值
获取数据先做检查(非空等)
request.setCharacterEncoding("utf-8");设置参数编码
---getParameterNames();获得所有参数的名称
Enumeration<String> e=request.getParamterNames();
while(e.hasMoreElements()){
参数名=e.nextElement();
参数值=request.getParamter(名);}
---getParameterValues(name);所有参数值,如复选框
String[] xx=request.**(name);
for(String str:xx){print(str);}
---getParamterMap();获得所有参数封装的Map实例
Map xx=request.**();
String[] yy=(String[])xx.get(name);
print(yy[0]);
---将xxx.jsp页面include到本页面中
<%request.getRequestDispatcher("/xxx.jsp").include(request, response);%>
将请求forward到xxx.jsp页面
<%request.getRequestDispatcher("/xxx.jsp").forward(request, response);%>
---在request范围设置属性
<%request.setAttribute("name", "admin");//没有关闭服务器,均能取得
request.getRequestDispatcher("/second.jsp").forward(request, response);%>
<body>
取得request范围属性
<%String strName = (String) request.getAttribute("name");
print("name属性值为" + strName);%>
2.session
getId() 获得session的ID
getCreationTime() session生成的时间
getLashAccessedTime() 最后通过session发送请求时间
getMaxInactiveInterval() 取得session生命周期
session.setMaxInactiveInterval() 设置最大活动时间
invalidate() 清空session内容(手动销毁)
isNew 判断session是否为"新"的
setAttribute("","") 浏览器不关闭,均可取得
3.response
response.sendRedirect("xxx.jsp") 客户端跳转,地址变
可带参数("xx.jsp?username=xx&pwd=xx")
response.setHeader("refresh", "x"); X秒后自动刷新
response.setHeader("refresh", "x;url=xx.jsp");
--<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
4.Cookie
Cookie c =new Cookie("Parameter","Value");
c.setMaxAge( ); 设置Cookie对象的生存期限
c.setMaxAge(Integer.MAX_VALUE) 永久有效
c.setMaxAge(0); 通过覆盖实现删除效果
response.addCookie(c); 向客户端增加Cookie对象
--Cookie[] cookies = request.getCookies();获取所有Cookie
for (Cookie c : cookies) { 遍历客户端上的每个Cookie
if (c.getName().equals("username")) { 判断
println(c.getValue());}} 输出
Value中文=URLEncoder.encode("张三", "UTF-8");
输出print(URLDecoder.decode(c.getValue(), "UTF-8"));
--存储sessionID
String sessionid=session.getId();
Cookie cookie=new Cookie("JSESSIONID",sessionid);
cookie.setPath("/WebProject"); //此处写web项目名称
cookie.setMaxAge(30*60);
response.addCookie(cookie);
5.Application
String path = application.getRealPath("/");
四大范围
page:通过pageContext对象表示当前JSP页面范围。代表与一个页面相关的对象和属性。
request:仅对本次请求有效,一旦JSP、Servlet将数据放入request中,该数据将可以被该本次请求的其他JSP、Servlet访问。
session:仅对一次会话有效,一旦JSP、Servlet将数据放入session中,该数据将可以被本次会话的其他所有的JSP、Servlet访问。
applicationScope ${.name}相当于getAttribute
${param.name}相当于request.getParameter
<%@ taglib prefix="标签库使用时前缀" uri="标签库uri" %>
核心库 prefix="c" uri="http://java.sun.com/jsp/jstl/core"
XML处理 x http://java.sun.com/jsp/jstl/xml
国际化处理 fmt http://java.sun.com/jstl/fmt_rt
SQL标签库 sql http://java.sun.com/jsp/jstl/sql
函数标签库 fn http://java.sun.com/jsp/jstl/functions
1.<c:set>定义变量,设置属性
<c:set var="变量名" value="变量值" scope="范围(默认page)" />
<jsp:useBean id="id" class="class" />创造一个class类的id
<c:set target="${ming}" property="shuxing" value="zhi" />给某变量属性赋值
2.<c.out>显示输出
<c:out value="${a}" default="b" /> 显示a若没有显示b
3.<c:remove>删除
<c:remove var="ming" scope="fanwei" />
4.<c:catch>捕获异常
5.<c:if><c:if test="条件">符合条件执行</if>
6.<c:choose><c:when><c:otherwise></c:choose>
7.<c:forEach>循环
<c:forEach items="集合" var="存放每个元素" varStatus="s" >
<c:out ${s.index索引,s.count第几个,s.first第一个true,s.last/boolean}>
8.<c:forTokens>用于在JSP中遍历一个字符串中所有由定义符号所分隔的成员
<c:forTokens items="字符串" delims="用作分割的字符串" 其它同上>
9.<c:import>
可以把其他静态或动态的文件包含到本身的JSP网页中。和JSP行为<jsp:include>最大的差别在于:<jsp:include>只能包含和自己在同一Web application下的文件;而<c:import>除了能够包含和自己的同一Web application的文件外。也可以包含不同Web application或者其他网站的文件。
10.<c:url>
用来生成URL,其语法格式分为两种,一种是不带参数的,一种是带参数的
11.<c:redirect>
可以从一个JSP页面跳转其他的页面上去,实现页面重定向功能。而且可以通过<c:param>标签传递参数
④项目自做basePage.jsp
<%@ page language="java" import="com.novaone.common.SystemParameter" pageEncoding="UTF-8"%>
<%@ page import="com.xx.xx" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>//核心标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" +request.getServerName() + ":"+ request.getServerPort() + path + "";
//样式
String StylePath = SystemParameter.getInstance().getValue(State.UI_STYLE);
//项目名称
String ObjectTitle = SystemParameter.getInstance().getValue(State.PROJECT_NAME);
%>
<c:set var="base" value="<%=basePath %>" />//根目录路径--var basePath ="${base}";
普通jsp
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ include file="/WEB-INF/jsp/basePage.jsp" %>
①语法格式 <%声明变量%>
指令----<%@ name 属性1 = "属性值1" 属性2 = "属性值2" ... %>
JSP三大常用指令
page 针对当前页面进行设置
include 用于包含另一个页面
taglib 定义和访问自定义标签
<% page errorPage="错误处理页面"%>
<%@ include%>--删除多余<html,head,body>标签
<jsp:include page="url" />标签,效率较低
<jsp:forward page="url" />跳转
<jsp:param name="参数名" value="参数值" />
以键值对的形式传递参数数据,本身不能单独使用,做子标签
②JSP 9大内置对象
内置对象 类型
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
pageContext javax.servlet.jsp.PageContext
session javax.servlet.http.HttpSession
application javax.servlet.jsp.ServletContext
out javax.servlet.jsp.JspWriter
config javax.servlet.ServletConfig
page java.lang.Object
exception java.lang.Throwable
1、request
---getParameter(name);获得参数名为name参数值
获取数据先做检查(非空等)
request.setCharacterEncoding("utf-8");设置参数编码
---getParameterNames();获得所有参数的名称
Enumeration<String> e=request.getParamterNames();
while(e.hasMoreElements()){
参数名=e.nextElement();
参数值=request.getParamter(名);}
---getParameterValues(name);所有参数值,如复选框
String[] xx=request.**(name);
for(String str:xx){print(str);}
---getParamterMap();获得所有参数封装的Map实例
Map xx=request.**();
String[] yy=(String[])xx.get(name);
print(yy[0]);
---将xxx.jsp页面include到本页面中
<%request.getRequestDispatcher("/xxx.jsp").include(request, response);%>
将请求forward到xxx.jsp页面
<%request.getRequestDispatcher("/xxx.jsp").forward(request, response);%>
---在request范围设置属性
<%request.setAttribute("name", "admin");//没有关闭服务器,均能取得
request.getRequestDispatcher("/second.jsp").forward(request, response);%>
<body>
取得request范围属性
<%String strName = (String) request.getAttribute("name");
print("name属性值为" + strName);%>
2.session
getId() 获得session的ID
getCreationTime() session生成的时间
getLashAccessedTime() 最后通过session发送请求时间
getMaxInactiveInterval() 取得session生命周期
session.setMaxInactiveInterval() 设置最大活动时间
invalidate() 清空session内容(手动销毁)
isNew 判断session是否为"新"的
setAttribute("","") 浏览器不关闭,均可取得
3.response
response.sendRedirect("xxx.jsp") 客户端跳转,地址变
可带参数("xx.jsp?username=xx&pwd=xx")
response.setHeader("refresh", "x"); X秒后自动刷新
response.setHeader("refresh", "x;url=xx.jsp");
--<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
4.Cookie
Cookie c =new Cookie("Parameter","Value");
c.setMaxAge( ); 设置Cookie对象的生存期限
c.setMaxAge(Integer.MAX_VALUE) 永久有效
c.setMaxAge(0); 通过覆盖实现删除效果
response.addCookie(c); 向客户端增加Cookie对象
--Cookie[] cookies = request.getCookies();获取所有Cookie
for (Cookie c : cookies) { 遍历客户端上的每个Cookie
if (c.getName().equals("username")) { 判断
println(c.getValue());}} 输出
Value中文=URLEncoder.encode("张三", "UTF-8");
输出print(URLDecoder.decode(c.getValue(), "UTF-8"));
--存储sessionID
String sessionid=session.getId();
Cookie cookie=new Cookie("JSESSIONID",sessionid);
cookie.setPath("/WebProject"); //此处写web项目名称
cookie.setMaxAge(30*60);
response.addCookie(cookie);
5.Application
String path = application.getRealPath("/");
四大范围
page:通过pageContext对象表示当前JSP页面范围。代表与一个页面相关的对象和属性。
request:仅对本次请求有效,一旦JSP、Servlet将数据放入request中,该数据将可以被该本次请求的其他JSP、Servlet访问。
session:仅对一次会话有效,一旦JSP、Servlet将数据放入session中,该数据将可以被本次会话的其他所有的JSP、Servlet访问。
application:对于整个Web应用有效,一旦JSP、Servlet将数据放入application中,该数据将可以被该应用下其他所有的JSP、Servlet访问。
-----------------------------------EL表达式 ${expression}applicationScope ${.name}相当于getAttribute
${param.name}相当于request.getParameter
sessionScope ${empty expression} null,无内容,长度0 检测是否为空,返回boolean
//如果传值不为空,则复选框选中
if(${!empty cm}){$(":checkbox[value='0']").prop("checked",true);}
pageScope
<%@ taglib prefix="标签库使用时前缀" uri="标签库uri" %>
核心库 prefix="c" uri="http://java.sun.com/jsp/jstl/core"
XML处理 x http://java.sun.com/jsp/jstl/xml
国际化处理 fmt http://java.sun.com/jstl/fmt_rt
SQL标签库 sql http://java.sun.com/jsp/jstl/sql
函数标签库 fn http://java.sun.com/jsp/jstl/functions
1.<c:set>定义变量,设置属性
<c:set var="变量名" value="变量值" scope="范围(默认page)" />
<jsp:useBean id="id" class="class" />创造一个class类的id
<c:set target="${ming}" property="shuxing" value="zhi" />给某变量属性赋值
2.<c.out>显示输出
<c:out value="${a}" default="b" /> 显示a若没有显示b
3.<c:remove>删除
<c:remove var="ming" scope="fanwei" />
4.<c:catch>捕获异常
5.<c:if><c:if test="条件">符合条件执行</if>
6.<c:choose><c:when><c:otherwise></c:choose>
7.<c:forEach>循环
<c:forEach items="集合" var="存放每个元素" varStatus="s" >
<c:out ${s.index索引,s.count第几个,s.first第一个true,s.last/boolean}>
8.<c:forTokens>用于在JSP中遍历一个字符串中所有由定义符号所分隔的成员
<c:forTokens items="字符串" delims="用作分割的字符串" 其它同上>
9.<c:import>
可以把其他静态或动态的文件包含到本身的JSP网页中。和JSP行为<jsp:include>最大的差别在于:<jsp:include>只能包含和自己在同一Web application下的文件;而<c:import>除了能够包含和自己的同一Web application的文件外。也可以包含不同Web application或者其他网站的文件。
10.<c:url>
用来生成URL,其语法格式分为两种,一种是不带参数的,一种是带参数的
11.<c:redirect>
可以从一个JSP页面跳转其他的页面上去,实现页面重定向功能。而且可以通过<c:param>标签传递参数
④项目自做basePage.jsp
<%@ page language="java" import="com.novaone.common.SystemParameter" pageEncoding="UTF-8"%>
<%@ page import="com.xx.xx" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>//核心标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" +request.getServerName() + ":"+ request.getServerPort() + path + "";
//样式
String StylePath = SystemParameter.getInstance().getValue(State.UI_STYLE);
//项目名称
String ObjectTitle = SystemParameter.getInstance().getValue(State.PROJECT_NAME);
%>
<c:set var="base" value="<%=basePath %>" />//根目录路径--var basePath ="${base}";
普通jsp
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ include file="/WEB-INF/jsp/basePage.jsp" %>