一 JSP 1 为什么要使用JSP? 我们上次做的练习:请求学生所有数据并展示到浏览器上面。发现一个问题:Servlet在处理请求的时候 挺好用的 但是 在回传响应的时候 通过servlet的resp的输出流往浏览器输出html格式的内容非常麻烦 out.write("<table border='1px' cellspacing='0' width='300' >"); for (Map<String,Object> map : list) { out.write("<tr>"); out.write("<td>"+map.get("id")+"</td>"); out.write("<td>"+map.get("name")+"</td>"); out.write("<td>"+map.get("age")+"</td>"); out.write("</tr>"); } out.write("</table>"); 这还只是将数据放到html标签里面 还没有加css和js 那么也就是说servlet在展示展示数据的时候 是非常麻烦的。 所以 我们需要一个展示数据方便的东西-------其实就是我们要学习的JSP 总结一句话:servlet用来获取数据 处理业务 servlet是一个.java文件 擅长处理与java代码有关系的内容 jsp 展示数据 jsp看上去像html文件 擅长处理与html有关的内容 (也可以写java) 2 什么是JSP JAVA SERVER PAGES java的动态网页 3 如何使用jsp 练习:请求学生所有数据并展示到浏览器上面 改成 servlet 接收请求 调用dao获取数据库数据 jsp 展示数据库中的数据 并响应给浏览器 3.1 通过 index.jsp 认识jsp常用的语句 A JSP基本组成 (注意 index.jsp 是默认的欢迎页 就是说 直接访问工程 就跳转到index.jsp) jsp的page指令 <%@ page contentType="text/html;charset=UTF-8" language="java" %> html部分 <html> <head> <title>$Title$</title> </head> <body> </body> </html> B jsp 可以写 html css 和 js代码 C jsp 可以写java代码 java代码: <% java代码区域 %> 例如: <% /*java代码*/ int a = 10; %> java变量在输出到jap中在浏览器显示 <%= 变量名%> 例如: <%= a %> 练习 : 定义一个变量 x 判断 x的值 是否大于 20 如果大于20 网页显示 你好世界 不大于20显示 世界你好 <% int x = 16; if(x > 20){ %> 你好 世界 <% } else { %> 世界 你好 <%}%> 练习: 写一个for0-20循环 输出 你好 世界i D 实战练习 1 StudentServlet 处理请求 调用dao获取数据库中的数据 @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /*1 获取数据库中的数据*/ IStudentDAO dao = new StudentDAOImpl(); List<Map<String, Object>> list = dao.getAllStudent(); /*2 请求共享数据(理解成 :展示什么数据) req.setAttribute("关键字key",共享的数据)*/ req.setAttribute("shuju1",list); /*3 请求转发到某个jsp (理解成:让哪个jsp展示数据) */ req.getRequestDispatcher("student.jsp").forward(req,resp); } 2 student.jsp 获取共享数据 展示数据 E 练习的请求流程图 (在web阶段 流程是非常重要) F jsp的三大指令 G jsp九大内置对象 H jsp的原理 ( jsp是一个特殊的html 理解不到位 )一个特殊的servlet 在tomcat目录文件夹下 work
servlet
package com.aaa.servlet; import com.aaa.dao.IStudentDAO; import com.aaa.dao.impl.StudentDAOImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.Map; public class StudentServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /*1 获取数据库中的数据*/ IStudentDAO dao = new StudentDAOImpl(); List<Map<String, Object>> list = dao.getAllStudent(); /*2 请求共享数据(理解成 :展示什么数据) req.setAttribute("关键字key",共享的数据)*/ req.setAttribute("shuju1",list); /*3 请求转发到某个jsp (理解成:让哪个jsp展示数据) */ req.getRequestDispatcher("student.jsp").forward(req,resp); } }
jsp页面
<%@ page import="java.util.Map" %> <%@ page import="java.util.List" %><%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/4/15 Time: 10:26 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生首页</title> <style> tr:nth-child(even){ background-color: yellow;} </style> </head> <body> <h1>学生管理系统</h1> <%--获取共享数据 注意:1 需要用java代码获取共享的数据 2 共享数据的时候用req 那么req在jsp中 request 3 需要自己手动类型强转 --%> <% List<Map<String, Object>> list = (List<Map<String, Object>>)request.getAttribute("shuju1"); %> <%--通过html 将数据展示出来--%> <table border="1" cellspacing="0" width="300"> <tr> <th>id</th> <th>姓名</th> <th>年龄</th> </tr> <%--通过java的 for循环 将 list遍历 并取出数据展示--%> <% for (Map map : list) { %> <tr> <td> <%=map.get("id")%> </td> <td> <%=map.get("name")%> </td> <td> <%=map.get("age")%> </td> </tr> <%}%> </table> </body> </html>