• JSP


    #Jsp的作用和servlet相似,也是拼接网页的

    #Jsp注释

    1.<!-- 注释内容 -->

    如果包含Java代码,这些Java代码会被执行

    2.<%-- 注释内容 --%>

    Jsp特有的注释,如果注释中有Java代码,会被忽略

    #jsp中的java代码,包含以下三种:

    --jsp表达式:<%= %>

    --jsp小脚本:<% %>

    --jsp声明:<%! %>

    >控制页面可变内容

    #jsp页面中的指令

    ##page指令

    -作用:用于导包、设置页面属性

    clip_image002

    ##include指令

    -作用:引用jsp

    clip_image004

    clip_image002[1]clip_image004[1]

    ## taglib指令

      引入标签库

      例:

    <%@ page pageEncoding="utf-8"%>
    <%
    @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    #jsp运行原理

    clip_image006

    结论:Jsp本质上就是servlet

    #Jsp翻译的过程

    clip_image008

    #jsp中的隐含(内置)对象:9个

    -request(*): HttpServletRequest

    -response: HttpServletRequest

    -out: JSPWriter类似于PrintWriter

    -config: ServletConfig

    -application: ServletContext

    -exception: Throwable jsp翻译成的Servlet所抛出的异常

    -session(*): HttpSession

    -page: Object 相当于this,指代翻译成的那个Servlet

    -pageContext(*): PageContext 是管理者,通过它可以获取其他8个隐含对象

    #如何在jsp上使用隐含对象

    - <%Object user = session.getAttribute(“user”);%>

    - <%=session.getAttribute(“user”)%>

    clip_image010

    clip_image012

    #模式

    clip_image014

    -引用了MVC设计模式对代码分层,降低代码的耦合度

    #MVC

    经典的设计模式,是代码的分层思想:

    M:Model,业务层,用来处理业务

    V:View,视图层,用来展现数据

    C:Controller,控制层,用来进行调度,是业务层和视图层的桥梁。

    --其目的是将代码解耦,便于开发及维护

    model2:

    QQ截图20190226122512

    package web;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import dao.EmpDao;
    import dao.EmpDaoImp;
    import entity.Emp;
    
    public class FindEmpServlet extends HttpServlet {
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
            //处理业务
            EmpDao dao = new EmpDaoImp();
            List<Emp> list = dao.findAll();
            //转发:让jsp继续完成这个请求
            //1.将数据绑定到request上
            req.setAttribute("emps", list);
            System.out.println(req);
            //2.将请求提交给jsp,让它继续处理,同时将处理请求的工具交给jsp:request+response
            //当前:/jsp2/findEmp
            //目标:/jsp2/emp_list.jsp
            req.getRequestDispatcher("emp_list.jsp").forward(req, res);
        }
    
    }
    <%@ page contentType="text/html" pageEncoding="utf-8" 
        import="entity.*,java.util.*"
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>查询</title>
    </head>
    <body>
        <table border = "1" cellspacing = "0" width = "40%">
            <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>职位</td>
                <td>月薪</td>
            </tr>
            <%
                List<Emp> list = (List<Emp>)request.getAttribute("emps");
                if(list != null){
                    for(Emp emp:list){
            %>
            <tr>
                <td><%=emp.getEmpno() %></td>
                <td><%=emp.getEname() %></td>
                <td><%=emp.getJob() %></td>
                <td><%=emp.getSal() %></td>
            </tr>
            <%
                    }
                }
            %>
        </table>
    </body>
    </html>
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
      <display-name>jsp2</display-name>
      
      <servlet>
          <servlet-name>findEmp</servlet-name>
          <servlet-class>web.FindEmpServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>findEmp</servlet-name>
          <url-pattern>/findEmp</url-pattern>
      </servlet-mapping>
    </web-app>

    --此处使用到了转发的概念

    ##转发和重定向的异同点:

    相同:都是解决web组件之间的跳转问题;web组件:Servlet/jsp

    不同(区别)

      -有依赖关系是用转发

      -没有依赖时,用重定向

    QQ截图20190226122512

    QQ截图20190226122512

      --一般情况下:-查询时用转发;增删改后重定向到查询

  • 相关阅读:
    环境变量配置1
    Golang 类型转换,断言和显式强制转换
    Goland could not launch process: decoding dwarf section info at offset 0x0: too short 解决方案
    用puttygen工具把私钥id_rsa转换成公钥id_rsa.ppk
    JetBrains GoLand 2018 激活码/ 注册码(最新破解方法)
    Go学习笔记(只有链接)
    linux中的ftp命令
    Linux的学习之路
    like语句百分号前置会使用到索引吗?
    记录下每月生活开支
  • 原文地址:https://www.cnblogs.com/menbozg/p/10436152.html
Copyright © 2020-2023  润新知