JSP学习笔记
2015-09-12 14:55
821 查看
1. JSP的4种基本语法
1.1 JSP注释
<%-- 注释内容 --%>
1.2 JSP声明
<%! 声明部分 %> 声明变量和方法
例如:
声明的变量和方法会变为Servlet类的成员变量和方法,可以用public、private等访问修饰符修饰,也可用static修饰。
1.3 输出JSP表达式
<%= 表达式 %>
例如:<%=info()%>
1.4 JSP脚本
<% JAVA代码 %>
JSP脚本将转换为Servlet里_jspService方法的可执行代码,这意味着jsp脚本部分可以声明变量,但这是局部变量,不可用访问修饰符修饰。
2. JSP的3个编译指令
JSP的编译指令是通知JSP引擎的消息,它不直接生成输出。
编译指令的语法格式:<%@ 编译指令名 属性名=”属性值” …. %>
2.1 Page指令
Page指令属性:
Language:默认为java
Extends:指定jsp页面编译产生的Java类所继承的父类或所实现的接口
Import:用来导入包。默认导入的包有java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*。
Session: 设定该页面是否需要session
Buffer:指定输出缓冲区的大小
Info:设置该jsp程序的信息
ErrorPage: 指定错误页面
isErrorPage:设置本JSP页面是否为错误处理程序
contentType:设置网页格式和编码
pageEncoding:指定生成网页的编码字符集
2.2 Include指令
<%@ include file=”script.jsp” %>
3. JSP的7个动作指令
3.1 Jsp:forward
Forward指令用于将页面响应转发到另外的页面或servlet中,转发是可以增加额外的参数,参数可以在目标页面中用HttpServletRequest类的getParameter()方法获取。
命令语法:
例如:
3.2 Jsp:include
用于包含某个页面,它不会导入被include页面的编译指令,仅将页面的body内容插入页面。
语法格式:
3.3 Jsp:useBean jsp:setProperty jsp:getProperty
useBean指令用于在jsp页面中初始化一个Java实例。setProperty设置JavaBean的属性值,getProperty输出JavaBean的属性值。
语法格式:
3.4 Jsp:plugin
主要用于下载服务器端的JavaBean或Applet到客户端执行
3.5 Jsp:param
用于设置参数,不能单独使用,需和include、forward或plugin一起使用。
4. JSP中的9个内置对象
application:javax.servlet.ServletContext的实例,代表JSP所属的应用本身。常用方法有getAttribute()、setAttribu()和getInitParameter()
config:javax.servlet.ServletConfig的实例,代表该JSP的配置信息。常用方法有getInitParameter()和getInitParameternames()
exception :java.lang.Throwable的实例,只有当编译指令page的isErrorPage属性为true时该对象才可以使用。常用方法有getMessage()和printStackTrace()
out:javax.servlet.jsp.JspWriter的实例,代表JSP页面的输出流
page:代表页面本身,也就是servlet中的this,能用page的地方就可以用this
pageContext:javax.servlet.jsp.PageContext的实例,代表JSP页面上下文,使用该对象可以访问页面中的共享数据。常用方法有getServletContext()和getServletConfig()等
request:javax.servlet.http.HttpServletRequest的实例,获取客户端请求参数必须使用该对象。常用方法有getParameter()、getParameterValues()、setAttribute()和getAttribute等
response :javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。常用方法有getOutputStream()、sendRedirect()等
session :javax.servlet.http.HttpSession的实例,代表依次会话,客户端浏览器与站点建立连接时会话开始,客户端关闭浏览器时,会话结束
JSP内置对象都是在_jspService 方法中完成初始化,因此只能在JSP脚本、JSP输出表达式中使用这些内置对象,而不能再JSP声明中使用它们。
4.1 Application对象
application对象通常有两个作用:
1) 在整个web应用的多个JSP、Servlet之间共享数据
2) 访问web应用的配置参数
4.1.1 让多个JSP、Servlet共享参数
4.1.2 获得web应用配置参数
4.2 Config对象
4.3 Exception对象
在JSP的异常处理机制中,一个异常处理页面可以处理多个JSP页面脚本部分的异常。异常处理页面通过page指令的errorPage属性指定。
4.4 Out对象
所有用out的地方,都可以用输出表达式来代替。<%=……%>表达式的本质就是out.write()。
4.5 pageContext对象
该对象主要用于访问JSP之间的共享数据,可以访问page、request、session、application范围的变量,可以用pageContext.getAttribute(name, scope)来得到任意作用域的属性值。
pageContext还可以获得其他对象:
ServletRequest getRequest()
ServletResponse getResponse()
ServletConfig getServletConfig()
ServletContext getServletContext()
HttpSession getSession()
4.6 Request对象
4.6.1 获取请求头/请求参数
请求头由浏览器自动添加,请求参数由客户指定。
获取请求头的方法:
String getHeader():获取指定请求头的值
java.util.Enumeration<String> getHeaderNames():获取所有请求头的名称
java.util.Enumeration<String> getHeaders():获取指定请求头的多个值
int getIntHeader():获取指定请求头的值并转换为整数
获取请求参数的方法:
String getParameter() :获取指定名字的参数的值
Map getParameterMap():获取参数名和值构成的Map对象
Enumeration getParameterNames():获取所有请求参数名构成的enumeration对象
String[] getParameterValues() :获取指定名字的参数的值
4.6.2 操作request范围的属性
forward用户请求时,请求参数和request范围的参数都不会丢失,即forward后还是原来的请求,未再次向服务器发送请求。
4.6.3 执行forward或include
HttpServletRequest类提供了一个getRequestDispatcher(String path)方法,其中path是希望forward或include的路径,该方法返回一个RequestDispacher。
getRequestDispatcher(“a.jsp”).include(request, response)
4.7 Response对象
4.7.1 response生成非字符响应
out对象也可以生成响应,但out是JSPWriter的实例,JSPWriter是Writer的子类,Writer是字符流,无法生成非字符内容。
1.1 JSP注释
<%-- 注释内容 --%>
1.2 JSP声明
<%! 声明部分 %> 声明变量和方法
例如:
<%! Public int count; Public String info() { Return “hello”; } %>
声明的变量和方法会变为Servlet类的成员变量和方法,可以用public、private等访问修饰符修饰,也可用static修饰。
1.3 输出JSP表达式
<%= 表达式 %>
例如:<%=info()%>
1.4 JSP脚本
<% JAVA代码 %>
JSP脚本将转换为Servlet里_jspService方法的可执行代码,这意味着jsp脚本部分可以声明变量,但这是局部变量,不可用访问修饰符修饰。
2. JSP的3个编译指令
JSP的编译指令是通知JSP引擎的消息,它不直接生成输出。
编译指令的语法格式:<%@ 编译指令名 属性名=”属性值” …. %>
2.1 Page指令
Page指令属性:
Language:默认为java
Extends:指定jsp页面编译产生的Java类所继承的父类或所实现的接口
Import:用来导入包。默认导入的包有java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*。
Session: 设定该页面是否需要session
Buffer:指定输出缓冲区的大小
Info:设置该jsp程序的信息
ErrorPage: 指定错误页面
isErrorPage:设置本JSP页面是否为错误处理程序
contentType:设置网页格式和编码
pageEncoding:指定生成网页的编码字符集
2.2 Include指令
<%@ include file=”script.jsp” %>
3. JSP的7个动作指令
3.1 Jsp:forward
Forward指令用于将页面响应转发到另外的页面或servlet中,转发是可以增加额外的参数,参数可以在目标页面中用HttpServletRequest类的getParameter()方法获取。
命令语法:
<jsp:forward page=”{relativeURL | <%=expression%}” /> <jsp:param name=”” value=”” /> </jsp:forward>
例如:
<jsp:forward page=”result.jsp”> <jsp:param name=”age” value=”29” /> </jsp:forward>
<h3>目标页面</h3> <%=request.getParameter(“age”)%>
3.2 Jsp:include
用于包含某个页面,它不会导入被include页面的编译指令,仅将页面的body内容插入页面。
语法格式:
<jsp:include page=”{relativeURL | <%=expression%}” flush=”true”> <jsp:param name=”” value=”” /> </jsp:include>
3.3 Jsp:useBean jsp:setProperty jsp:getProperty
useBean指令用于在jsp页面中初始化一个Java实例。setProperty设置JavaBean的属性值,getProperty输出JavaBean的属性值。
语法格式:
<jsp:useBean id=”” class=”” scope=”page | request | session | application” /> //id是JavaBean的实例名 <jsp:setProperty name=”” property=”” value=”” /> //name是JavaBean的实例名 <jsp:getProperty name=”” property=”” />
3.4 Jsp:plugin
主要用于下载服务器端的JavaBean或Applet到客户端执行
3.5 Jsp:param
用于设置参数,不能单独使用,需和include、forward或plugin一起使用。
4. JSP中的9个内置对象
application:javax.servlet.ServletContext的实例,代表JSP所属的应用本身。常用方法有getAttribute()、setAttribu()和getInitParameter()
config:javax.servlet.ServletConfig的实例,代表该JSP的配置信息。常用方法有getInitParameter()和getInitParameternames()
exception :java.lang.Throwable的实例,只有当编译指令page的isErrorPage属性为true时该对象才可以使用。常用方法有getMessage()和printStackTrace()
out:javax.servlet.jsp.JspWriter的实例,代表JSP页面的输出流
page:代表页面本身,也就是servlet中的this,能用page的地方就可以用this
pageContext:javax.servlet.jsp.PageContext的实例,代表JSP页面上下文,使用该对象可以访问页面中的共享数据。常用方法有getServletContext()和getServletConfig()等
request:javax.servlet.http.HttpServletRequest的实例,获取客户端请求参数必须使用该对象。常用方法有getParameter()、getParameterValues()、setAttribute()和getAttribute等
response :javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。常用方法有getOutputStream()、sendRedirect()等
session :javax.servlet.http.HttpSession的实例,代表依次会话,客户端浏览器与站点建立连接时会话开始,客户端关闭浏览器时,会话结束
JSP内置对象都是在_jspService 方法中完成初始化,因此只能在JSP脚本、JSP输出表达式中使用这些内置对象,而不能再JSP声明中使用它们。
4.1 Application对象
application对象通常有两个作用:
1) 在整个web应用的多个JSP、Servlet之间共享数据
2) 访问web应用的配置参数
4.1.1 让多个JSP、Servlet共享参数
//get-application.jsp <% ! int i ; %> <% application.setAttribute(‘counter’, String.valueof(++i)) ; %>
//put-application.jsp <%=application.getAttribute(‘counter’);%>
//Servlet @WebServlet(name=”get-application”, urlPatterns=(“get-application”)) public class getApplication extends httpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContextType(“text/html;character=gb2312”); PrintWriter out = response.getWriter(); out.println(“<html><head><title>”); out.println(“测试application”); out.println(“</title></head><body>”); ServletContext sc = getServletConfig.getServletContext(); out.println(“application中当前的counter值为:”); out.println(sc.getAttribute(“counter”)); out.println(“</body></html>”); } }
4.1.2 获得web应用配置参数
//getWebParam.jsp <% String driver = application.getInitParameter(“driver”); String url = application.getInitParameter(“url”); String user = application.getInitParameter(“user”); String password = application.getInitParameter(“password”); %>
4.2 Config对象
//config.jsp name配置参数的值为:<%=config.getInitParameter(“name”)%>
//web.xml <servlet> <servlet-name>config</servlet-name> <jsp-file>/config.jsp</jsp-file> <init-param> <param-name>name</param-name> <param-value>juedi</param-value> </init-param> <servlet-mapping> <servlet-name>config</servlet-name> <url-pattern>/config</url-pattern> </servlet-mapping>
4.3 Exception对象
在JSP的异常处理机制中,一个异常处理页面可以处理多个JSP页面脚本部分的异常。异常处理页面通过page指令的errorPage属性指定。
//throwException.jsp <%@ page errorPage=”error.jsp”%> <% int a = 6; int c = a / 0; %>
//error.jsp <%@ page isErrorPage=”true”%> <body> 异常类型是:<%=exception.getClass()%><br /> 异常信息是:<%=exception.getMessage()%> </body>
4.4 Out对象
所有用out的地方,都可以用输出表达式来代替。<%=……%>表达式的本质就是out.write()。
4.5 pageContext对象
该对象主要用于访问JSP之间的共享数据,可以访问page、request、session、application范围的变量,可以用pageContext.getAttribute(name, scope)来得到任意作用域的属性值。
//pageContextTest.jsp <% pageContext.setAttribute(“page”, “hello”); pageContext.setAttribute(‘name’, ‘juedi’ , pageContext.SESSION_SCOPE) ; pageContext.setAttribute(‘pass’, ‘pass’, pageContext.APPLICATION_SCOPE) ; %>
pageContext还可以获得其他对象:
ServletRequest getRequest()
ServletResponse getResponse()
ServletConfig getServletConfig()
ServletContext getServletContext()
HttpSession getSession()
4.6 Request对象
4.6.1 获取请求头/请求参数
请求头由浏览器自动添加,请求参数由客户指定。
获取请求头的方法:
String getHeader():获取指定请求头的值
java.util.Enumeration<String> getHeaderNames():获取所有请求头的名称
java.util.Enumeration<String> getHeaders():获取指定请求头的多个值
int getIntHeader():获取指定请求头的值并转换为整数
获取请求参数的方法:
String getParameter() :获取指定名字的参数的值
Map getParameterMap():获取参数名和值构成的Map对象
Enumeration getParameterNames():获取所有请求参数名构成的enumeration对象
String[] getParameterValues() :获取指定名字的参数的值
//request.jsp <% Enumeration<String> headerNames = request.getHeaderNames() ; while (headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); out.println(headerName + “-->” + request.getHeader(headerName) + “<br />”); } String name = request.getParameter(“name”); %>
4.6.2 操作request范围的属性
//draw.jsp <body> <form method=”post” action=”first.jsp”> 取钱:<input type=”text” name=”balance” /> <input type=’submit’ value=’submit’ /> </form> </body>
//first.jsp <% String bal = request.getParameter(“balance”); double qian = Double.parseDouble(bal); if (qian < 500) out.println(‘Give you’ + qian); else { List<String> info = new ArrayList<String>(); info.add(“1111”); info.add(“2222”); request.setAttribute(“info”, info); } %> <jsp :forward page= ‘second.jsp’ />
//second.jsp <% String bal = request.getParameter(‘balance’) ; double qian = Double.parseDouble(bal); List<String> info = (List<String>)request.getAttribute(‘info’) ; for (String tmp : info) out.println(tmp + “<br />”); out.println(“Give you” + qian); %>
forward用户请求时,请求参数和request范围的参数都不会丢失,即forward后还是原来的请求,未再次向服务器发送请求。
4.6.3 执行forward或include
HttpServletRequest类提供了一个getRequestDispatcher(String path)方法,其中path是希望forward或include的路径,该方法返回一个RequestDispacher。
getRequestDispatcher(“a.jsp”).include(request, response)
4.7 Response对象
4.7.1 response生成非字符响应
out对象也可以生成响应,但out是JSPWriter的实例,JSPWriter是Writer的子类,Writer是字符流,无法生成非字符内容。
相关文章推荐
- JS-return的使用
- 基于Arcgis for javascript实现百度地图ABCD marker的效果
- 分分钟搞懂JS-闭包函数
- ExtJs jsonStore加载的监听
- JS-面向对象-封装
- javascript 模拟java 实现继承的5种方式
- js学习笔记(二),数组的方法
- js学习笔记(一)
- javascript高级程序设计知识点总结(4)
- (二)我的JavaScript系列:JavaScript面向对象旅程(下)
- 高性能JavaScript--加载和执行(简要学习笔记一)
- JS函数创建的具体过程
- JS函数调用的四种方法
- 配置JSDoc用conf.json
- JavaScript运动框架(全)
- <Java Web学习初级阶段>JavaScript实现注册页面的表单验证
- IE11错误:Exception in window.onload: An error has occuredJSPlugin.3005 解决方案
- <Java Web学习初级阶段>JavaScript实现简单网页计算器
- 关于JS中prototype的理解
- (标记)js中的事件委托