标签:getattr 循环 reac XA 图像 stream 调整 关系 hid
<a href="请求资源地址?参数名=值&参数名=值&参数名=值">xxxx</a>
注释:<%-- --%>
浏览器查看源代码看不到
<%=有结果返回的表达式(返回结果必须是基本数据类型或字符串)%>
;
结尾。<% java语句 %>
;
结尾。<% %>
中java语句相当于写在servlet的doGet. doPost方法中。<%! %>
<%! %>
中声明的变量是全局变量,相当于在servlet类中声明一个属性当jsp代码与html混合书写时,注意结束符问题。
<jsp:动作名>
<jsp:forward page="跳转页面">
跳转动作(服务器跳转)
<jsp:include page="页面">
动态包含,获取指定页面执行后的结果。
<%@include file="">
静态包含,把指定页面拷贝到当前页面后执行当前页面。
动态包含:相当于每个jsp页面编译一个独立的servlet,无法实现变量. 方法等的共享。静态包含:相当于将所有jsp页面整合成一个servlet,可以使用其他页面定义的变量. 方法。
<jsp:param>
<jsp:forward page="test.jsp"> <jsp:param value="tom" name="username"/> ----------- -------------- <jsp:param name="age"> 12 </jsp:param></jsp:forward>
<jsp:forward page="test.jsp?username=tom&age=12">
<jsp:useBean id="变量名" class="包名.类名" scope="4个范围">
<jsp:setProperty name="Bean的id" property="对象的属性名" param="input表单的name属性值" value="值" >
<jsp:setProperty name="person" property="*"/>
<jsp:getProperty name="Bean的id" property="对象的属性名">
<jsp:setProperty>
.<jsp:getProperty>
实际上就是调用Bean对象的setter. getter方法。
<%@page errorPage="error.jsp"%>
<%@page isErrorPage="true"%>
<error-page> <exception-type>java.lang.ArithmeticException</exception-type> <location>/MathError.jsp</location></error-page><error-page> <error-code>404</error-code> <location>/404.jsp</location></error-page>
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { /*只处理这两种兼容的异常*/ …… }
类型 | 对象名 | 功能 |
---|---|---|
JspWriter | out | 往浏览器写内容 |
HttpServletRequest | request | Http请求对象. |
HttpServletResponse | response | Http响应对象 |
PageContext | pageContext | JSP的页面上下文 |
HttpSession | session | 会话对象 |
ServletContext | application | 应用上下文 |
ServletConfig | config | JSP的ServletConfig |
Object | page | 页面实现类的对象(例如:this) |
Exception | exception | 含有指令<%@page isErrorPage="true"%> |
其中,有4个是范围对象
pageContext,request,session,application
对应<jsp:useBean/>
指令的scope分别是:page,reqeust,session,application
也就是说,指定不同scope的bean对象(Java Bean)会被绑定到不同的范围对象中
选择范围对象的原则:作用域的范围越小越好;因为作用域小的生命周期短,有利于性能提高。
例如:
<jsp:useBean id="stu" class="vo.Student" scope="page"/>
<% Student stu = pageContext.getAttribute("stu"); if(stu==null) { stu=new Student(); pageContext.setAttribute("stu",stu); }%>
PageContext对象提供取得属性的方法
PageContext对象取得其他隐含对象的方法
pageContext对象存取其他隐含对象属性的方法,此时需要指定范围的参数。
储存和取得属性方法;
方法 | 功能 |
---|---|
void setAttribute(String name, Object value) | 设定name属性的值为value |
Enumeration getAttributeNamesInScope(int scope) | 取得所有scope 范围的属性 |
Object getAttribute(String name) | 取得name 属性的值 |
void removeAttribute(String name) | 移除name 属性的值 |
取得请求参数的方法
方法 | 功能 |
---|---|
String getParameter(String name) | 取得name 的参数值 |
Enumeration getParameterNames() | 取得所有的参数名称 |
String [] getParameterValues(String name) | 取得所有name 的参数值 |
Map getParameterMap() | 取得一个要求参数的Map |
能够取得请求HTTP 标头的方法
方法 | 功能 |
---|---|
String getHeader(String name) | 取得name 的标头 |
Enumeration getHeaderNames() | 取得所有的标头名称 |
Enumeration getHeaders(String name) | 取得所有name 的标头 |
int getIntHeader(String name) | 取得整数类型name 的标头 |
long getDateHeader(String name) | 取得日期类型name 的标头 |
Cookie [] getCookies() | 取得与请求有关的cookies |
其他的方法
方法 | 功能 |
---|---|
String getContextPath() | 取得Context 路径(即站台名称) |
String getMethod() | 取得HTTP 的方法(GET. POST) |
String getProtocol() | 取得使用的协议 (HTTP/1.1. HTTP/1.0 ) |
String getQueryString() | 取得请求的参数字符串,不过,HTTP的方法必须为GET |
String getRequestedSessionId() | 取得用户端的Session ID |
String getRequestURI() | 取得请求的URL,但是不包括请求的参数字符串 |
String getRemoteAddr() | 取得用户的IP 地址 |
String getRemoteHost() | 取得用户的主机名称 |
int getRemotePort() | 取得用户的主机端口 |
String getRemoteUser() | 取得用户的名称 |
void getCharacterEncoding(String encoding) | 设定编码格式,用来解决窗体传递中文的问题 |
方法 | 功能 |
---|---|
long getCreationTime() | 取得session产生的时间,单位是毫秒 |
String getId() | 取得session 的ID |
long getLastAccessedTime() | 取得用户最后通过这个session送出请求的时间 |
long getMaxInactiveInterval() | 取得最大session不活动的时间,若超过这时间,session 将会失效 |
void invalidate() | 取消session 对象,并将对象存放的内容完全抛弃 |
boolean isNew() | 判断session 是否为"新"的会话 |
void setMaxInactiveInterval(int interval) | 设定最大session不活动的时间,若超过这时间,session 将会失效 |
方法 | 功能 |
---|---|
int getMajorVersion() | 取得Container主要的Servlet API版本 |
int getMinorVersion() | 取得Container次要的Servlet API 版本 |
String getServerInfo() | 取得Container的名称和版本 |
String getMimeType(String file) | 取得指定文件的MIME 类型 |
ServletContext getContext(String uripath) | 取得指定Local URL的Application context |
String getRealPath(String path) | 取得本地端path的绝对路径 |
void log(String message) | 将信息写入log文件中 |
void log(String message, Throwable throwable) | 将stack trace 所产生的异常信息写入log文件中 |
page 对象
response 对象
方法 | 功能 |
---|---|
void addCookie(Cookie cookie) | 新增cookie |
void addDateHeader(String name, long date) | 新增long类型的值到name标头 |
void addHeader(String name, String value) | 新增String类型的值到name标头 |
void addIntHeader(String name, int value) | 新增int类型的值到name标头 |
void setDateHeader(String name, long date) | 指定long类型的值到name标头 |
void setHeader(String name, String value) | 指定String类型的值到name标头 |
void setIntHeader(String name, int value) | 指定int类型的值到name标头 |
方法 | 功能 |
---|---|
void sendError(int sc) | 传送状态码(status code) |
void sendError(int sc, String msg) | 传送状态码和错误信息 |
void setStatus(int sc) | 设定状态码 |
out 对象
方法 | 功能 |
---|---|
void clear( ) | 清除输出缓冲区的内容 |
void clearBuffer( ) | 清除输出缓冲区的内容 |
void close( ) | 关闭输出流,清除所有的内容 |
int getBufferSize( ) | 取得目前缓冲区的大小(KB) |
int getRemaining( ) | 取得目前使用后还剩下的缓冲区大小(KB) |
boolean isAutoFlush( ) | 回传true表示缓冲区满时会自动清除;false表示不会自动清除并且产生异常处理 |
exception对象
config 对象
ServletContext
HttpServletRequest
HttpServletResponse
HttpSession
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
tomcat
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8444"/>
servlet
数据库
表达式 | 值 |
---|---|
${-168.18} | -168.18 |
${3.8e-18} | 3.8e-18 //科学计数法 |
${3.14159265} | 3.14159265 |
${"Hello JSP EL!"} | Hello JSP EL! 等价于 <%="Hello JSP EL!"%> ${‘Hello JSP EL...‘} |
${true} //can be TRUE? | true |
${false} //can be FALSE? | false |
${str==null} | true //布尔值的表达式 |
类别 | 运算符 |
---|---|
算术运算符 | +, -, *, /(或 div), %(或 mod) |
关系运算符 | ==(或 eq), !=(或 ne), <(或 lt), >(或 gt), <=(或 le), >=(或 ge) |
逻辑运算符 | &&(或 and), ||(或 or), !(或 not) |
验证运算符 | empty |
其中,empty 判断一个变量是否为null或是否包含有效数据
例子:
表达式 | 值 |
---|---|
${3+5.1} | 8.1 |
${"Hello"+",Tarena!"} | 报错! // EL的"+"没有字符串连接功能 |
${5*2} | 10 |
${9.3/3} | 3.1 |
${9.3 div 3} | 3.1 |
${8 div 0} | Infinity // 表示无穷大 |
${9%2} | 1 |
${9 mod 2} | 1 |
${8*6>68?"Yes":"No"} | No //三目表达式 |
${empty name} | true //对范围对象内的变量或对象进行判空 |
<% String name=""; request.setAttribute("name",name); //如果没有 setAttribute ,则必定是空%>
变量和JavaBean属性数据输出
对象属性. 数组. 集合数据输出
.
和[]
,.
用于单个对象或属性[]
用于数组集合取值。${user["name"]}${user[‘name‘]} //拿属性时,单引跟双引等价${user.name} //这种方法同样可以
${aList[0]} //使用下标来取值${aList[1]} //取得对象的引用地址 还可以嵌套:${aList[1][‘name‘]}${aList[3]} //下标越界,不会报错;只是取不出值
${map.date} ${map["date"]} //这两个等效${map.aList[0]} ${map["aList"][0]}//这两个也等效${map.aList[1][name]} //嵌套取值
el提供了自己的一套隐含对象,方便在页面内对各种常用数据信息的访问.
EL隐藏对象 | JSP隐藏对象 |
---|---|
pageScope | pageContext |
requestScope | request |
sessionScope | session |
applicationScope | appication |
param | request.getParameter(), ${param.username} |
paramValues | request.getParameterValues, ${paramValues.like[0]} |
header | request.getHeader() 按照key-value的形式取出;value:是一个String类型的值:${header["host"]} , ${header["accept"]}, ${header["user-agent"]} |
headerValues | 按照key-value的方式取出,但是headerValues里面的value是一个String类型的数组 |
cookie | request.getCookies() |
initParam | context param |
web.xml<context-param> <param-name>encoding</param-name> <param-value>utf-8</param-value></context-param>${initParam.server}
如何使用JSTL
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> //核心标签库
<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> //数据库标签库
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> //prefix 表前缀(可改,但通常按这写的用); uri 指向标签库的入口
core:核心标签库
<c:set>
<c:set value="value" var="varName" [scope= "{page|request|session|application}"]/ ><c:set value="value" target="target" property="propertyName"/ >
这个标签用于在某个范围(page,request,session,application)里面设置特定的值, (默认为page),或者设置某个已经存在的javabean的属性。<c:set var="counter" value="200"/>${counter}//输出<c:set var="tarena">Tarena It Traning Ltd.</c:set>${tarena}可以指定范围,默认是page<c:set value="20" var="maxIdelTime" scope="session"/>${maxIdelTime}设置JavaBean的值<jsp:useBean id="girl" class="vo.SuperGirl"/><c:set value="Shirly" target="${girl}" property="name"/><td>girl.name</td><td>${girl.name}</td>
<c:catch>
它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于<%try{}catch{}%>
语法:
<c:catch [var="varName"]>nested actions</c:catch>
例子
<c:catch var="error"> <% Integer.parseInt("abc"); %></c:catch><% try{ Integer.parseInt("abc"); }catch(Exception error){ } %> //等价<c:out value="${error}"/><c:out value="${error.message}"/><c:out value="${error.cause}"/>
<c:if>
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]> Body内容</c:if>
注:没有 else<c:set var="age" value="16"/><c:if test="${age<18}"> <h1 align=center>您尚未成年,不能进入游戏中心!</h1></c:if>
<c:choose>
<c:set var="tax" value="5000" /><c:choose> <c:when test="${tax <=0}"> 您今年没有纳税! </c:when> <c:when test="${tax<=1000&&tax>0}"> 您今年缴纳的税款为${tax},加油! </c:when> <c:when test="${tax<=3000&&tax>1000}"> 您今年缴纳的税款为${tax},再接再励哦! </c:when> <c:otherwise> 您今年纳税超过了3000元,多谢您为国家的繁荣富强作出了贡献! </c:otherwise></c:choose>
<c:forEach>
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> Body 内容</c:forEach>
<% List aList=new ArrayList(); aList.add("You"); aList.add("are"); aList.add("a"); aList.add("beautiful"); aList.add("girl"); request.setAttribute("aList",aList); %><center> <table border=1> <c:forEach var="word" items="${aList}"> <tr> <td> ${word} </td> </tr> </c:forEach> </table> </center><c:forEach items=‘${header}‘ var=‘h‘> <tr> <td> <li>Header name:<c:out value="${h.key}"/> </li> </td> <td> <li>Header value:<c:out value="${h.value}"/> </li> </td> </tr></c:forEach>//另外一种用法: (类似 for 循环)<c:forEach var="count" begin="10" end="100" step="10"> <tr> <td> <c:out value="${count}"/><br> </td> </tr></c:forEach>
Servlet过滤器是Servlet的一种特殊用法,主要用来完成一些通用的操作。比如编码的过滤,判断用户的登陆状态等等。
Servlet过滤器的适用场合:
filter 其实是一个“servlet chaining”(servlet 链)。一个 filter 包括:
Servlet过滤器接口的构成:
Servlet过滤器的创建步骤:
<filter> <filter-name>myfilter</filtername> <filter-class>com.filter.MyFilter</filter-class></filter><filter-mapping> <filter-name>myfilter</filter-name> <url-parten>*.do</url-parten></filter-mapping>
Filter 有4种类型,主要体现在
<dispatcher>REQUEST</dispatcher>
默认,客户端的直接的请求,才触发该过滤器<dispatcher>FORWARD</dispatcher>
servlet 调用forward(req,resp)时触发<dispatcher>INCLUDE</dispatcher>
servlet 调用 include(req,resp)时触发<dispatcher>ERROR</dispatcher>
发生错误,跳转到错误页面时触发它可以监听客户端的请求. 服务端的操作等。通过监听器,可以自动激发一些操作。
如:监听在线的用户数量。当增加一个session时,就激发sessionCreated(HttpSessionEvent se),给在线人数加1
监听器的种类 : 一共分三大类型,有 8 种 listener:
监听器创建步骤:
XMLHttpRequest对象实现Ajax,
属性:
方法:
使用Ajax的步骤:
通过jquery方式实现:
标签:getattr 循环 reac XA 图像 stream 调整 关系 hid
原文地址:https://www.cnblogs.com/edhg/p/9215780.html