- JSP规范:来自于JavaEE规范中的一种;
- JSP规范制定了如何开发JSP文件代替响应对象将处理结果写入响应体中的开发流程;
- JSP规范制定了Http服务器应该如何调用管理JSP文件;
_<%...%>_
:执行标签,在此标签内的命令才能被当作Java命令;<%=...%>
:输出标签,在此标签内的命令会被输出到页面中显示; ```jsx <%@ page import=”com.jiangzhiyan.entity.Student” %> <%@ page import=”java.util.List” %> <%@ page import=”java.util.ArrayList” %> <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
<%
Student student1 = new Student(101,”张三”);
Student student2 = new Student(102,”李四”);
Student student3 = new Student(103,”王五”);
List
学生编号 | 学生姓名 |
---|---|
<%=student.getId()%> | <%=student.getName()%> |
- JSP中的内置对象:
- 1)request对象(请求作用域对象):HttpServletRequest类型;
- 作用:在JSP文件运行时读取请求协议包中信息;Servlet在请求转发时实现数据共享;
```jsx
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--
JSP文件内置对象:request
类型:HttpServletRequest类型;
作用:
在JSP文件运行时读取请求协议包中信息;
Servlet在请求转发时实现数据共享
-->
<!--
浏览器发送请求:
http://localhost:8080/017web/request.jsp?userName=zhangsan&password=123456
-->
<%
//JSP运行时,借助内置request对象读取请求协议包中信息
String userName = request.getParameter("userName");
String password = request.getParameter("password");
%>
用户姓名:<%=userName%>
<br>
用户密码:<%=password%>
- 2)session对象(会话作用域对象):HttpSession类型;
- 作用:JSP文件在运行时,可以通过session来增/删/改/查当前用户的共享数据; ```jsx <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
<% session.setAttribute(“key1”,”HelloWorld”);//增 session.setAttribute(“key2”,100);//增 session.removeAttribute(“key2”);//删 session.setAttribute(“key1”,”Hello JSP”);//改 String value1 = (String) session.getAttribute(“key1”);//查,或者在另一个jsp文件中查 %> 共享数据为:<%=”key1:”+value1%>
- 3)application对象(全局作用域对象):ServletContext类型;
- 作用:JSP文件运行时,可以通过application来操作当前网站application中的共享数据;
```jsx
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--
ServletContext application:全局作用域对象
同一个网站中的Servlet和JSP,都可以通过当前网站的全局作用域对象实现数据共享
-->
<%
application.setAttribute("key1",new Date());
%>
- Servlet与JSP的分工:
- Servlet:负责处理业务并得到处理结果;
- JSP:不负责处理业务,主要任务是将Servlet的处理结果写入响应体中;
- Servlet工作完毕后,一般通过请求转发方式向TomCat申请调用JSP; ```java package com.jiangzhiyan.controller;
import com.jiangzhiyan.entity.Student;
import javax.servlet.; import javax.servlet.http.; import java.io.IOException; import java.util.ArrayList; import java.util.List;
public class OneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//待共享的数据(假定)
Student s1 = new Student(101,”张三”);
Student s2 = new Student(102,”李四”);
Student s3 = new Student(103,”王五”);
//使用List集合存放共享数据
List
```jsx
<%@ page import="com.jiangzhiyan.entity.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<table align="center" border="1px" width="12%">
<tr align="center">
<th>学生编号</th>
<th>学生姓名</th>
</tr>
<%
//获取OneServlet共享的数据
List<Student> studentList = (List<Student>) request.getAttribute("key1");
//迭代获取共享数据并向页面输出数据
Iterator<Student> iterator= studentList.iterator();
while(iterator.hasNext()){
Student student = iterator.next();
%>
<tr align="center">
<td><%=student.getId()%></td>
<td><%=student.getName()%></td>
<tr>
<%
}
%>
</table>
- Http服务器调用JSP文件步骤:
- 1)Http服务器将JSP文件内容编辑为一个Servlet接口实现类(.java);
- 2)Http服务器将Servlet接口实现类编译为class文件(.class);
- 3)Http服务器负责创建这个class的实例对象,这个实例对象就是Servlet实例对象;
- 4)Http服务器通过Servlet实例对象调用_jspService方法,将JSP文件内容写入到响应体中;