- 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文件内容写入到响应体中;
