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

     

  • 相关阅读:
    org.hibernate.QueryException: could not resolve property
    Eclipse支持文件UTF-8编码
    Eclipse External Tool Configration Notepad++
    WIN10 devtoolsuser
    Linux查看和注销用户(User)
    java list 去重
    监控系统对比 Ganglia vs Open-falcon vs Prometheus vs Zabbix vs Nagios vs PandoraFMS
    swagger 指定字段不显示到文档里
    mysql uuid() 相同 重复
    正则校验:微信号,qq号,邮箱
  • 原文地址:https://www.cnblogs.com/qurui1998/p/10711064.html
Copyright © 2020-2023  润新知