赞
踩
目录
1、JSP技术介绍
为什么会出现JSP(Java Server Pages)技术?
2、JSP是什么?
JSP(全称 Java Server Pages)Java 服务端页面技术,是 JavaEE 平台下的技术规范。它允许使用特定的标签在 HTML 网页中插入 Java 代码,实现动态页面处理,所以 JSP 就是 HTML 与Java 代码的复合体。JSP 技术可以快速的实现一个页面的开发,相比在 Servlet 中实现页面开发将变得更加容易。
3、JSP的特点:
1、JSP 和 Servlet 是本质相同的技术。当一个 JSP 文件第一次被请求时,JSP 引擎会将该 JSP编译成一个 Servlet,并执行这个 Servlet。如果 JSP 文件被修改了,那么 JSP 引擎会重新编译这个 JSP。
2、JSP 引擎对 JSP 编译时会生成两个文件分别是.java 的源文件以及编译后的.class 文件,并放到 Tomcat 的 work 目录的 Catalina 对应的虚拟主机目录中的 org\apache\jsp 目录中。两个文件的名称会使用 JSP 的名称加”_jsp”表示。如:index_jsp.java、index_jsp.class。
JSP 的原始标签在 JSP 的任何版本中都可以使用。
- //需求:以 20%概率显示你中奖
- <html>
- <head>
- <title>Title</title>
- </head>
- <body>
- 欢迎来到中奖游戏
-
- <%
-
- int flag = new Random().nextInt(100);
- if (flag <= 20){
-
- %>
- 中奖了 <%=flag %>
- <% }else {%>
- 再试一次吧 <%= flag %>
- <% } %>
-
- </body>
- </html>
JSP 指令标签的作用是声明 JSP 页面的一些属性和动作。
<%@指令名称 属性=“值” 属性=“值”%>
(1)Page指令标签:
contentType:设置响应类型和编码。
pageEncoding:设置页面的编码。
import:导入所需要的包。
language:当前JSP页面里面可以嵌套的语言。
session:设置JSP页面是否获取 session 内置对象。
buffer:设置JSP页面的流的缓冲区的大小。
autoFlush:是否自动刷新。
extends:声明当前JSP的页面继承于那个类.必须继承的是httpservlet及其子类。
isELIgnored:是否忽略 el 表达式。
errorPage:当前JSP页面出现异常的时候要跳转到的JSP页面。
isErrorPage:当前JSP页面是否是一个错误页面。若值为true,可以使用JSP页面的一个内置对象
exception。
(2)Include 指令标签:
静态包含,可以将其他页面内容包含进来,一起进行编译运行,生成一个 java 文件。
<%@include file=“被包含 JSP 的相对路径” %>
(3)Taglib 指令标签:
导入标签库。
<%@taglib prefix=“前缀名” uri=“名称空间” %>
JSP 中一共预先定义了 9 个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception。
request对象:request 对象是 HttpServletRequest 类型的对象。
response对象:response 对象是 HttpServletResponse 类型的对象。
session对象:session 对象是 HttpSession 类型的对象,只有在包含 session= "true” 的页面中才
可以被使用。
application对象:application 对象是 ServletContext类 型的对象
out对象:out对象是JspWriter类型的对象
config对象:config 对象是ServletConfig类型的对象。
pageContext 对象:pageContext 对象是PageContext类型的对象。作用是取得任何范围的参数,通过它可以获取JSP页面的out、request、reponse、session、application 等对象。pageContext
对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。
page对象:page 对象代表JSP本身。
exception对象:exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true” 的页面中
才可以被使用。
- test.jsp文件
- <%
- String idStr = request.getParameter("id");
- Integer id = Integer.parseInt(idStr);
- id++;
- //将数据存储到request中
- request.setAttribute("number",id);
- //将请求转发到test2.jsp并响应
- request.getRequestDispatcher("test2.jsp").forward(request,response);
-
- test2.jsp文件
- <%
- Integer number = (Integer) request.getAttribute("number");
- %>
- <%=number%>
String[] getParameterValues(String key) 获取客户端传来多个重名的参数
- <%
- String[] names = request.getParameterValues("name");
- %>
- <%=Arrays.toString(names)%>
void setCharacterEncoding(String charset) 指定每个请求编码
- <%
- request.setCharacterEncoding("UTF-8");
- %>
sendRedirect(String key). 重定向,进行页面跳转
转发getRequestDispatcher和重定向sendRedirect的区别:
如果两个页面需要传递值的话,则必须使用转发,不能重定向。
如果两个页面不需要传递值,可使用重定向。
用户会话
服务器无法识别每一次HTTP 请求出处(不知道来自哪个终端),它只会接受到一个请求,
所以存在一个问题:将用户的响应给其他人,必须有一种技术来让服务器知道请求来自哪里,这就是会话技术。
会话:就是客户端和服务器之间发生一系列的请求和响应的过程,打开浏览器进行操作至关闭浏览器的过程。
会话状态:指服务器和浏览器会话过程中产生状态信息,借助于会话状态,服务器能够把属于同一次会话一系列的请求和响应关联起来。
实现会话方式:
属于同一会话请求,都有一个唯一的标识:sessionID
- <%
- String sessionId = session.getId();
- System.out.println(sessionId);
- %>
PageContext : pageConext 存放的数据在当前页面有效,开发时使用较少。
ServletRequest: request 存放的数据在一次请求(转发)内有效,使用非常多。
HttpSession: session 存放的数据在一次会话中有效,使用的比较多。如:存放用户的登录信息,购物车功能。
ServletContext: application 存放的数据在整个应用范围内都有效,因为范围太大,应尽量少用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。