django 制作web网站,动态页面数据已更新,但是无法刷新,这是怎么回事?是页面缓存吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 制作web网站,动态页面数据已更新,但是无法刷新,这是怎么回事?是页面缓存吗?相关的知识,希望对你有一定的参考价值。

我做的是一个注册网站,需要用户输入用户名提交并将注册结果显示在当前页,例如一个新用户注册成功后应该显示注册成功,当我再次刷新页面时应该显示该用户已注册过的提示,为何仍旧提示之前的信息?后台程序没错,是不是页面缓存造成的?

参考技术A 其实你说你做了一个注册页面,然后post到当前页面的地址,然后返回注册成功的信息。
首先,如果现在成功返回的注册成功信息,你点击了F5或浏览器上的刷新,浏览器会默认再发一次请求,这时会问你是否继续提交,如果你点了继续提交,那么你之前的注册信息会再次被提交,如果后台不去验证唯一性,那么会出现两条相同的记录。
其次,假设不是上面所说的再次post提交,你直接浏览器输入你的这个网址,默认做的是get提交,这时如果你的后台不去验证当前用户是否注册过,那么始终返回最初的注册页面,其实这里正常注册提交上来的数据你会保存到数据库里,那么当前用户对应的session_id在用户登录后就需要跟用户进行绑定,只要是这个session_id那么就提示已经注册过就可以了

java web 实战开发--------》刷第二遍-----》心得

一、发展历史

  

  • 现在的网站除了有文件系统之外,还有web 容器。
  • 前者用于响应静态页面请求(HTML+JavaScript),后者用于响应动态页面请求(java EE:JSP+Servlet+java EE容器/组件/服务------->框架的引入)。
  • 静态页面请求返回的是固定的静态页面,它不可以操作数据库,而动态页面请求则可以操作数据库,并且是通过拼凑代码的形式得到请求结果页面。
  • 静态页面可以进行数值传递,可以通过JavaScript实现页面交互效果,这一点和动态页面是一样的。静态页面唯一的缺陷在于:静态页面无法操作数据库,无法进行数据持久化操作。
  • 静态文件系统与动态web的比较:

 

  静态文件系统 动态web
开发技术 HTML+JavaScript+CSS

CGI/PHP/ASP/ASP.NET/JSP(即javaEE)

  • 现在一般使用JSP开发中型或大型动态web
  • JSP=HTML+Java代码
是否需要web container

不需要

  • (*.html/*.htm文件可以独立运行)
  • (如图1-3,静态页面请求直接被转到web服务器,由服务器到静态文件系统中查找用户请求的页面,并且返回给用户)

需要

  • (*.jsp文件必须部署到web container(如Tomcat)上才可以运行,因为JSP页面中含有大量Java代码)
  • (如图1-3,动态页面请求被转送到web容器,web container中可以接收请求参数,并且调用程序动态的生成请求结果,最终将结果传送给web服务器,再由web服务器转送给客户端)
是否操作数据库 不能操作数据库 可以操作数据库
是否可以实现交互效果

可以实现交互效果(使用JavaScript实现)

  • JavaScript中的事件(onClick/onSubmit/onChange等)
  • JavaScript中的window对象(用于弹出一些窗口) 
  • JavaScript中的document(使得JS可以像操作DOM树一样操作HTML,标签增/删、修改标签/属性值、修改CSS值) 
可以实现交互效果
静态请求和动态请求的区别

什么是静态请求?

片面地解释:所有以*.html或者htm结尾的都是静态请求,是直接查询静态文件系统得到结果。

静态请求的所有代码都是固定的。

什么是动态请求?

片面的解释:所有以*.jsp或者*.php结尾的都是动态请求,需要先经过web container调用相应的程序,拼凑出请求结果。

动态请求的所有代码都是拼凑而成的,如论坛的代码就是拼凑而成的。

     
     

  

二、建造动态web网站的技术

概述:

  • 动态web网站,即可以响应动态请求的,可以与用户进行交互的网站。动态相对于静态web网站的最大区别在于动态web可以操作数据库,而静态web不可以操作数据库。
  • 构建动态web网站有若干技术体系,不同的技术体系适用于构建不同规模的动态网站:
    • CGI(已废弃),因为这种技术是针对每一个请求,在服务器端创建一个新的进程,比较耗时好资源,所以现在该技术基本废弃。
    • PHP,适用于构建个人或小型web网站
    • ASP,只能用与IIS服务器+SQL Server数据库上,适用于构建个人或者小型web网站
    • ASP.NET,只适用于构建中型web网站
    • JSP,适用于中型以及大型web网站的开发。JSP开发出的网站兼容于多种服务器如Tomcat/JBoss/WebLogic等等,且具有很好地跨平台移植特性。JSP是基于java语言中的Servlet【服务器端小程序】发展而来的,由于Servlet开发过程较为复杂,所以Sun公司根据ASP技术的特点,将java中的Servlet进行包装,从而形成了一门新的技术——JSP。  

 三、使用JSP技术体系建造动态web网站

3.1从Java SE到Java EE

    • java EE 是在java SE 的基础上发展而来的
    • Java EE是一种专门用于开发企业级应用程序的标准开发架构
    • 在Java EE的开发中是以B/S作为主要的开发模式
    • 相对于Java SE 而言,Java EE中多出了若干种组件、容器和服务,使得企业级应用程序的开发变得更加方便快捷  
      • JavaEE容器:Java EE相对于Java SE ,多出了4种容器,分别是Web Container/EJB Container/APP Container/Application Client Container.那么这些JavaEE容器是干什么用的呢?答:每种Java EE容器负责一种组件的运行,这些容器的存在可以保证各种组件之间的运行互不干扰。要想构建一个企业级的程序(即web网站),WebContainer容器是必不可少的,其他容器则可有可无。 
      • JavaEE组件:相对于java SE应用程序而言,企业级应用程序将所有组成部分分成若干类,这些类也被称作不同类型的JavaEE组件,不同类型的javaEE组件将会在不同的javaEE容器中运行,且彼此互不影响。如java EE的WebContainer容器中运行的就是JSP和Servlet组件,EJB Container容器中运行的就是事务管理相关的组件。
      • JavaEE服务:为了方便企业级应用程序(web应用)的开发,加快开发进程。java EE相对于javaSE而言,多出了若干API,这些API被分成若干组,分别被称作不同的JavaEE服务。主要包括:
        • HTTP协议相关API(一般的web应用都需要使用该协议)
        • PMI-IIOP协议相关API(主要在访问EJB组件时使用该协议)
        • Java IDL相关API(主要用于访问外部CORBA服务)
        • JTA相关API(主要用于事务处理)
        • JDBC相关API(主要用于数据库操作)
        • JMS相关API(主要用于发送点对点消息)
        • JavaMail相关API(主要用于发送邮件)
        • JAF相关API(主要用于封装邮件中的数据)
        • JNDI相关API(主要用于将名称和Object绑定成key-value对儿)
        • JAXP以及STAX相关API(主要用于XML文件的解析)
        • JAAS相关API(用于用户认证操作)
        • JSF相关API(这是JavaEE官方提供的一套MVC实现组件)
        • JSTL相关API(JSP页面的标签支持库,正是因为JavaEE中提供了这个支持库,web应用的JSP页面才可以使用相应的标签)
        • JCA相关API(用于连接拥有不同架构的应用程序)
        • SAAJ/JAXR相关API(主要用于异构的分布式程序开发)

      

    由上图可以看出,java Applet不支持任何的Java EE API(即JavaEE服务),所以java Applet现在基本上已经被废除,现在几乎没有人开发java Applet程序了。

3.2java EE(企业级应用程序)的标准MVC架构模式

      

3.3从标准java EE 的MVC架构模式到各种框架的引入

概述:

  • java SE----->Java EE----> 各种框架的引入
  • 基本功--->基本功--------->新的花样(使得开发过程被简化)
  • 学习java EE 开发,基本功要扎实,框架的使用则是后续才需要考虑的(万不可本末倒置)

  

3.4java EE(web网站)的实际构建过程——编程思路

6.1文件系统(静态页面)部分

  • HTML+JavaScript:用于静态页面的开发
  • 实例:HTML标签+JavaScript程序---->使得静态HTML页面与页面之间、页面与用户之间可以展现一定的交互效果
    • 实例一,HTML中标签的“事件”+调用JavaScript函数======>实现网页页面与用户之间的交互效果
        • step1,HTML页面中标签的“事件”,如<a href="" onClick="JavaScript函数">中的onClick事件
        •     HTML页面中标签还有一些其他事件,如onSubmit、onClick、onSelect、onChange、 
        • step2,编写JavaScript函数
        •        使用JavaScript基本语法知识,或者使用浏览器提供给JavaScript的对象(如window对象)来编写JavaScript函数
        • step3,将step2中所编写的JavaScript函数用<script>标签包含到HTML页面中
    • 实例二,用HTML页面中<form>标签中的onSubmit事件+JavaScript函数中的正则表达式对form标签的子标签中输入的信息进行格式验证
        • step1,可以使用HTML页面<form action=“register.jsp” onSubmit="return javaScript函数">。这样一来点击<form>子标签<input                 type="submit">提交表单信息的时候,就会触发onSubmit事件,执行该事件绑定的JavaScript函数
        • step2,编写相应的JavaScript函数,在JavaScript函数中使用正则表达式对表单元素的值进行验证,符合要求时返回true,表单中的信息才可以              提交到目的页面
    • 实例三,用JavaScript中的相应接口将HTML文件看成DOM树,并做出后续操作
          • JavaScript可以获取并修改HTML中所有元素(标签)
          • JavaScript可以获取并修改HTML中各个标签的所有属性
          • JavaScript可以获取并修改HTML页面的所有CSS样式
          • JavaScript可以添加或删除HTML元素(标签)
          • JavaScript可以响应HTML页面的所有DOM事件
              

6.2web容器(动态web页面、操作数据库)

  • 概述:
    • MVC标准架构模式
    • View层:
    • 动态web project 的标准目录结构:参见《java web 开发实战经典.pdf   P186》

  • 实际编程思路:
    • step1,搭建开发环境(安装web container)
      • 有很多种web container,如Tomcat就是一种非常好用的免费的web container
      • 对于动态web而言,web container是必须的,如果没有web conainer,动态请求(*.jsp)将无法运行,所以相应的动态请求也无法得到响应 
      • 关于Tomcat的安装方法,建议参照《java web开发实战经典》的第四章 
    • step2,安装好web container之后,就可以编写第一个动态 web project了
      • step2.1,编写*.jsp文件
        • 关于JSP文件的基础语法,参见如下博客  
      • step2.2,将其部署到web container上(如Tomcat上)  
      • step2.3,使用浏览器访问该JSP页面

以上是关于django 制作web网站,动态页面数据已更新,但是无法刷新,这是怎么回事?是页面缓存吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX 和 Django 从 SQL 数据库更新网站上的字段数据

Django(39)使用redis配置缓存

如何使用动态导航制作动态内容? [关闭]

web基本概念

(转)Django学习之 第三章:动态Web页面基础

django Highcharts制作图表--显示CPU使用率