1.为什么要使用jsp
再使用jsp之前我们先做一个联系,查询数据库表中的内容,并写在html页面上显示出来,我们以上一篇的代码为基础:代码如下:
package com.zs.servlet; import com.zs.dao.IStudentDAO; import com.zs.dao.impl.StudentImpl; 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 StudentServletDemo extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8");//当表中出现汉字时,输出到html页面会出现乱码,这句话设置响应的编码格式 // 首先创建接口的对象,通过接口调用方法查询所有学生信息 IStudentDAO is = new StudentImpl(); List<Map<String, Object>> list = is.getStudentAll(); // 获得输出流 PrintWriter out = resp.getWriter(); // 建表格 out.write("<table border='1' cellspecing='1'>"); // 表头 out.write("<tr>"); out.write("<th>id</th>"); out.write("<th>name</th>"); out.write("<th>age</th>"); out.write("</tr>"); // 遍历集合输出 for (Map<String, Object> map : list) { out.write("<tr>"); out.write("<td>"+map.get("id")+"</td>"); out.write("<td>"+map.get("sname")+"</td>"); out.write("<td>"+map.get("age")+"</td>"); out.write("</tr>"); } } }
结果:
我们发现在Java后台中写html代码十分麻烦,因此我们需要一个展示数据方便的东西----->jsp
Servlet获取数据,处理业务,是一个java文件,擅长处理与java代码有关的内容,
jsp展示数据,jsp看起来像是html文件,擅长处理与html文件有关的内容;(jsp看起来像是html,但是并不是html,是java的动态网页)
什么是jsp?
java Server Pages java的动态网页
如何使用jsp?
我们还以开头写的代码为例;现在改用jsp来显示数据,在web文件夹下新建student.jsp文件 代码如下:
package com.zs.servlet; import com.zs.dao.IStudentDAO; import com.zs.dao.impl.StudentImpl; 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.util.List; import java.util.Map; public class StudentServletDemo extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 首先创建接口的对象,通过接口调用方法查询所有学生信息 IStudentDAO is = new StudentImpl(); List<Map<String, Object>> list = is.getStudentAll(); // 将list集合设置为请求共享数据,并给共享数据起一个名字stuAll,当有多个共享数据时,方便区分; req.setAttribute("stuAll",list); // 请求转发到jsp页面,并转发请求参数,回响参数 req.getRequestDispatcher("student.jsp").forward(req,resp); } }
<%@ page import="java.util.List" %> <%@ page import="java.util.Map" %><%-- Created by IntelliJ IDEA. User: 赵帅 Date: 2019/4/16 Time: 18:41 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--用html标签来搭建表格--%> <table border="1" cellspacing="0"> <tr> <th>id</th> <th>name</th> <th>age</th> </tr> <%--在jsp中写java代码,获得共享数据list,java代码要写在<%%>标签中--%> <% List<Map<String ,Object>> stuAll = (List<Map<String, Object>>) request.getAttribute("stuAll"); for (Map<String, Object> map : stuAll) {%> <tr> <%--获得一个变量的值标签为 <%= 变量名%> --%> <td><%= map.get("id")%></td> <td><%= map.get("sname")%></td> <td><%= map.get("age")%></td> </tr> <%--这个括号与for循环的括号组成一对--%> <%}%> </table> </body> </html>
结果如下: