Jsp

一 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>

 

posted @ 2019-04-15 15:47  芯-觞  阅读(242)  评论(0编辑  收藏  举报