jsp

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>");
        }
    }
}
View Code

结果:

我们发现在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>
jsp代码

结果如下:

原文地址:https://www.cnblogs.com/Zs-book1/p/10719099.html