标签: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