4/21day38_jsp_mvc

2020-04-24  本文已影响0人  蹦蹦跶跶的起床啊

回顾

1. session作用
        在一次会话中,多次请求间,共享数据,在服务器中存储

2. session快速入门
    存数据
        HttpSession session = request.getSession();
        session.setAttribute(String name,Object value);
    取数据
        HttpSession session = request.getSession();
        Object object = session.getAttribute(String name);
    
    工作原理
        基于cookie技术
        
3. session使用细节
    浏览器关闭,服务器不关闭,二次获取session数据是否一致?
        默认是不一致,
        因为浏览器关闭,cookie销毁....
    浏览器不关闭,服务器关闭,二次获取session数据是否一致?
        服务器正常关闭的情况下,是一致
        钝化(序列化)
        活化(反序列化)
    生命周期
        创建?
            浏览器携带jsessionid与服务器不匹配时创建
        销毁?
            非正常关闭
            为活跃30分钟
            自杀
        作用范围?
            在一次会话中,多次请求间
4. 三大域对象
        ServletContext
        HttpSession
        HttpServletRequest

5. 综合案例
    购物车
    用户登录

JSP&MVC

今日目标

* jsp
    工作原理(servlet)
    脚本注释
    指令
    内置对象
    动作标签
    
* mvc模式(初体验)

一 JSP

1.1 概述

​ 在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。 为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)

​ JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,页面动态资源使用java代码,页面静态资源使用html标签。

简单来说:可以在html标签中嵌套java代码

作用:简化书写,展示动态页面

1.2 快速入门

需求

​ 在jsp页面,动态展示当前时间

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>${NAME}</title>
  </head>
  <body>
 <%
    Date date = new Date();
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
   String currentTime = simpleDateFormat.format(date);
 %>
  <h3><% out.write(currentTime);%></h3>
  </body>
</html>

1.3 工作原理

1.4 脚本和注释

1.4.1 脚本

JSP通过脚本方式来定义java代码

1. <% 代码 %>
        脚本片段,生成在service方法中,每次请求的时候都会执行
        
2. <%! 代码 %>
        声明片段,在java代码中声明成员,放在jsp生成java文件中的成员位置

3. <%=代码 %>
        输出脚本片段,相当于out.print("代码") 方法,输出到jsp页面

1.4.2 注释

1. html注释
        <!-- 注释静态资源 -->
        
2. JSP注释
        <%-- 注释所有 --%>

3. java注释(JSP脚本内使用)
        // 单行
        /* 多行 */
        /**文档 */

注释作用范围

注释 JSP源码 java源码 html源码
html 可见 可见 可见
java 可见 可见 不可见
JSP 可见 不可见 不可见

1.5 指令

* 作用
        用于配置JSP页面,导入资源文件
* 格式
        <%@ 指令名称 属性名1="属性值1" 属性名2="属性值2" ...%>
        
* 三大指令
    1. page:配置JSP页面
    
    2. include:页面包含(静态)
    
    3. taglib:导入资源文件

1.5.1 page指令

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    contentType 相当于 response.setContentType(); 设置响应体的MIME类型和编码方式
    language    这哥们有点尴尬,目前仅支持java语言
    import      导入jar包
        <%@ page import="java.util.Date" %>
    errorPage   当前页面报错后,跳转指定错误提示页面
    isErrorPage 声明当前jsp页面是一个异常处理页面,打开异常开关
        false(默认)
        true:可以操作exception异常对象
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="500.jsp" %>
<html>
<head>
    <title>demo2</title>
</head>
<body>
<h3>page指令</h3>
<%
    new Date();
    new SimpleDateFormat();
    Integer age = 1 / 0;
%>
</body>
</html>

500.jsp(异常处理页面)

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>500</title>
</head>
<body>
<h4>服务器繁忙,请稍后重试....</h4>
<%
    // 获取错误信息,发送程序员,进行处理。。。
    out.print(exception.getMessage());
%>
</body>
</html>

1.5.2 include指令(静态包含)

top.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>top.jsp</title>
</head>
<body>
<div style="border: skyblue dashed 5px;height: 100px">头部</div>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo3</title>
</head>
<body>
<%@include file="top.jsp"%>
<div style="border: red solid 5px;height: 400px">我是include静态包含,主体..</div>
</body>
</html>

1.5.3 taglib指令(铺垫明天的知识..)

① 导入jar包

② 通过taglib指令引入

1.6 内置对象

* 作用
        在JSP页面中不需要获取和创建,可以直接使用的对象
        
* JSP一共有9个内置对象
    变量名               真实类型                  作用
    pageContext         PageContext              当前页面中共享数据(域对象)
    request             HttpServletRequest       一次请求中共享数据(域对象)
    session             HttpSession              一次会话中共享数据(域对象)
    application         ServletContext           整个web应用共享数据(域对象)
    -----------------------------------------------
    response            HttpServletResponse      响应对象
    page(this)              Object              当前页面(servlet)对象
    out                 JSPWriter                输出对象
    config              ServletConfig            servlet配置对象
    exception           Throwable                异常对象(默认关闭...)      

* 常用
    1. pageContext
            1)当前页面的域对象
            2)获取其他八个内置对象
            
    2. request
            1)接收用户请求(参数)
            2)一次请求中域对象
            
    3. response
            1)设置响应
                字节流
                字符流
    4. out
            1)专门在jsp中处理字符流
                print(); // 可以输出一切类型
                write(); // 只能输出字符类型

1.7 JSP动作标签

* 作用
        简化JSP页面编码
    
* 常用
    <jsp:include>:页面包含(动态)
        相当于
            request.getRequestDispatcher().include(request,response);
    <jsp:forward>:请求转发(页面跳转)
        相当于
            request.getRequestDispatcher().forword(request,response);
    <jsp:param>:参数传递
        其实这哥们是forward子标签
        使用request.getParameter() 获取参数

1.7.1 动态包含

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo6</title>
</head>
<body>
<jsp:include page="top.jsp"></jsp:include>
<div style="border: green solid 5px;height: 400px">jsp的动态包含,主体</div>
</body>
</html>

在企业开发时,我们推荐使用静态包含,提升访问性能;注意:不能出现重名的变量。。。


1.7.2 请求转发

a.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>a</title>
</head>
<body>
<%
    System.out.println("a.jsp执行了");
    request.setAttribute("username", "request域存值了");
%>
<jsp:forward page="b.jsp">
    <jsp:param name="name" value="jack"></jsp:param>
    <jsp:param name="age" value="18"></jsp:param>
</jsp:forward>
</body>
</html>

b.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>b</title>
</head>
<body>
<%
    System.out.println("b.jsp执行了");

    // request域传递
    System.out.println(request.getAttribute("username"));

    // param标签传递
    System.out.println(request.getParameter("name"));
    System.out.println(request.getParameter("age"));
%>
</body>
</html>

二 MVC模式【思想】

2.1 JSP发展史

2.2 MVC介绍

MVC设计模式: Model-View-Controller简写。

MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑显示界面的设计方法。

简单来说:前辈们总结的一套设计经验,适合在各种软件开发领域,目的:高内聚,低耦合

* M:model(模型) JavaBean(1.处理业务逻辑、2.封装实体)

* V:view(视图)  Jsp(展示数据)

* C:controller(控制器)Servlet(1.接收请求、2.调用模型、3.转发视图)

* 优缺点
    优点
        降低耦合性,方便维护和拓展,利于分工协作
    缺点
        使得项目架构变得复杂,对开发人员要求高

- 课下作业

老师下午总结

面试题目:说出jsp的四大域对象,并且说出其作用范围

四大域的应用场景

上一篇 下一篇

猜你喜欢

热点阅读