jsp/servlet
1、JSP与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言。Java 服务器页面 (Java Server Page ,JSP) 以扩展名 .jsp 保存
2 jsp全称:java server page
工作原理
客户向服务器发请求--》服务器把编译后的结果返回给客户端
3 jsp-->java语法+jsp内置对象+jsp基本语法格式
servlet-->java语法+servlet常用类
jsp注解
1、在<%
//注解1行
/* 注解多行 */
%>
2、页面中多个内容用
<%--
包含的内容都不显示
--%>
html:<!-- -->
JSP 语法
1、脚本程序 :<% 代码片段 %>2、JSP声明:一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。<%! declaration; [ declaration; ]+ ... %>3、JSP表达式:<%= 表达式 %>和<%out.println(...);%>是一样,但 out.println(...)后有分号4、JSP注释:<%-- 该部分注释在网页中不会被显示--%>同时支持java的// 、/*...*/、 /**...*/<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译 HTML注释,通过浏览器查看网页源代码时可以看见注释内容 5、JSP指令. <%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等<%@ include ... %> 包含其他文件<%@ taglib ... %> 引入标签库的定义,可以是自定义标签<%@ include ... %> 包含其他文件但一般使用
<jsp:include page="t1.jsp"></jsp:include>
jsp指令
以“<%@ ” 开始,以“%> ” 结束。比如:
<%@ include file = " Filename" %>
表达式
表达式
<%=...%>
注没有分号结束
jsp声明
<%! 函数或方法 %>
jsp对象
可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量JSP共有以下9种基本内置组件
request对象
1、客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例2、request常用方法方 法 说 明1 object getAttribute(String name) 返回指定属性的属性值2 String getCharacterEncoding() 返回字符编码方式3 getRequestDispatcher转发request.getRequestDispatcher("t1.jsp").forward(request, response); 4 String getParameter(String name) 返回name指定参数的参数值5 String[] getParameterValues(String name) 返回包含参数name的所有值的数组6 String getProtocol() 返回请求用的协议类型及版本号7 String getServerName() 返回接受请求的服务器主机名8 int getServerPort() 返回服务器接受此请求所用的端口号9 String getRemoteAddr() 返回发送此请求的客户端IP地址10 String getRemoteHost() 返回发送此请求的客户端主机名11 void setAttribute(String key,Object obj) 设置属性的属性值12 String getContentType() 得到请求体的MIME类型 欢迎:<%=request.getAttribute("name") %> 请求方式:<%=request.getMethod()%>
请求的资源:<%=request.getRequestURI()%>
请求用的协议:<%=request.getProtocol()%>
请求的文件名:<%=request.getServletPath()%>
请求的服务器的IP:<%=request.getServerName()%>
请求服务器的端口:<%=request.getServerPort()%>
客户端IP地址:<%=request.getRemoteAddr()%>
客户端主机名:<%=request.getRemoteHost()%>
response对象
处理 JSP 生成的响应
将响应发送给客户端,它是HttpServletResponse类的实例。
1 PrintWriter getWriter() 返回可以向客户端输出字符的一个对象
2 void setContentType(String type) 设置响应的MIME类型
3 sendRedirect(java.lang.String location) 重新定向客户端的请求
强内聚、松耦合
out 对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
序号 方 法 说 明
1 void clear() 清除缓冲区的内容
2 void clearBuffer() 清除缓冲区的当前内容
3 void flush() 清空流
4 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0
5 int getRemaining() 返回缓冲区还剩余多少可用
6 boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
7 void close() 关闭输出流
8 print() 和println()输出信息
面试:sendRedirect和getRequestDispatcher(即转发和重定向的区别)
重定向response.sendRedirect("success.jsp");
转发:request.getRequestDispatcher("success.jsp").forward(request,response);
1转发:一次请求,一次响应。地址栏的url不会改变。在服务器端执行,所以必须在同一台服务器上。转发速度快。
可以通过request.getAttribute()获取request.setAttribute()中的值
2重定向:两次请求。地址栏的url会随之改变为定向后的那个url。在客户端执行,所以可以在不同的服务器上。重定向速度慢。不能通过request.getAttribute()获取request.setAttribute()中的值
session 对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
注:它的生命周期为浏览器不关闭或时间没到(默认时间为30分钟)
常用方法:
1 session.setMaxInactiveInterval(2);//设置过期时间,单位为秒,默认是30分钟
2 void invalidate() 取消SESSION,使SESSION不可用
3boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入
4 long getCreationTime() 返回SESSION创建时间
5 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号
6 long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间
7 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms)
8 getAttribute(String name) 返回指定属性的属性值
9 void setAttribute(String key,Object obj) 设置属性的属性值
session是运行在服务器端较案例,
注意:session的生命周期较长,一般开发中不宜使用过多存储
注:session失效时间
1服务器重重启
2浏览器关闭
3setMaxInactiveInterval(2);时间到了
4没有设置则默认为30分钟
application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在
方 法 说 明,通常用于开发计算器
1 Object getAttribute(String name) 返回给定名的属性值
2 void setAttribute(String name,Object obj) 设定属性的属性值
3 void removeAttribute(String name) 删除一属性及其属性值
4 String getServerInfo() 返回JSP(SERVLET)引擎名及版本号
5 String getRealPath(String path) 返回一虚拟路径的真实路径
6 ServletContext getContext(String uripath) 返回指定WebApplication的application对象
7 int getMajorVersion() 返回服务器支持的Servlet API的最大版本号
8 int getMinorVersion() 返回服务器支持的Servlet API的最大版本号
9 String getMimeType(String file) 返回指定文件的MIME类型
10 URL getResource(String path) 返回指定资源(文件及目录)的URL路径
exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象1 String getMessage() 返回描述异常的消息2 String toString() 返回关于异常的简短描述消息3 void printStackTrace() 显示异常及其栈轨迹4 Throwable FillInStackTrace() 重写异常的执行栈轨迹 1<%@ page language="java" contentType="text/html;charset=gb2312" import="java.util.*" isErrorPage="true"%><%=exception %>
2<%@ page language="java" contentType="text/html;charset=gb2312" errorPage="ExceptionDemo.jsp"%><%int[] arr = {1,2,4};out.println(arr[3]);%>
page 对象
page对象就是指向当前JSP页面本身,生存周期就是当前页,在实际开发中一般使用pageContext
pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问
config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
序号 方 法 说 明
1 ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象
2 String getInitParameter(String name) 返回初始化参数的值
隐式对象的作用域
page只能在本页有效,request本页或转发页有效,session只要浏览器不关都有效或在有效时间内都有效,application只要服务器不关机都有效,即范围大小为:
page<request<session<application