zoukankan      html  css  js  c++  java
  • 日常总结——JSP篇(补)

    序——

       初次接触JSP,写一个登录注册界面

    正文——

      JSP介绍:JSP通过在标准的HTML页面中插入java代码,其静态的部分无须java程序控制。每个JSP页面就是一个servlet实例, WEB应用中的每个JSP页面都会由servlet容器生成对应的servlet。

       理解:在HTML语句中加入java代码的页面

      servlet介绍:servlet必须运行在服务器中。servlet容器的作用是处理客户端的请求,并将处理结果返回给客户端。当客户请求到来时,servlet容器获取请求,然后调用某个servlet,并把servlet的执行结果返回给客户。Tomcat就是一个servlet容器 

      servlet工作过程:

      因为JSP在执行第一次后,会被编译成Servlet的类文件,即.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不再重新把JSP编译成Servelt。在执行JSP网页时,通常可以分为两个时期:转译时期(Translation Time)和请求时(Request Time)。

    当JSP网页在执行时,JSP Container会做检查工作,如果发现JSP网页有更新修改时,JSP Container才会再次编译JSP成Servlet; 如果JSP没有更新时,就直接执行前面所产生的Servlet。

    ◆转译时期:JSP网页转移成Servlet类。

    ◆请求时期:Servlet类执行后,响应结果至客户端。

    转译期间做了两件事情:

    ◆转译时期:将JSP网页转移为Servlet源代码 .java.

    ◆编译时期:将Servlet 源代码 .java编译成 Servlet类 .class.

      request与session的区别:request对象和session对象的最大区别是生命周期 request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一起请求 当请 求完毕之后,request里边的内容也将被释放点 ,也就是request的生命周期只在数据提交 而session的生命周期也是针对一个客户端 但是却是在别人设置的会话周期内(一般是20-30分钟) session里边的内容将一直存在 即便关闭了这个客户端浏览器 session也不一定会马上释放掉的 简单来说可以这么理解 session相当于是一个客户端的全局变量; request是某一次访问的局域变量;

      数据库的连接:

    1 Class.forName("com.mysql.jdbc.Driver");
    2 conn=DriverManager.getConnection(url,user,password);

    "com.mysql.jdbc.Driver"需要插入jar包

    url:数据库名

      连接数据库可以用静态代码块——静态代码块:一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化。

      数据库数据类型——VARCHAR:是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。

      session介绍在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象( 默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。在服务器创建session对象的同时,会为该session对象生成唯一的session Id,客户端和服务器通过session Id互相确认

      JDBC:有一组用java语言编写的类和接口,规定了java开发人员访问数据库所使用的方法。

      javabean:简单理解就是一串类似于

    private bool male;

    public bool isMale()
    {
    return this.male;
    }
    public void setMale(bool b)
    {
    this.male=b;
    }

    request.getParameter()与request.getAttribute()的区别:

    request.getAtribute(String name) 返回name属性的值
    request.getParamter(String name) 获得客户传递给服务器的name参数的值
    request是对当前页面的请求,如果当前这个页面再去请求另一个页面 会生成新的request
    request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设置值,
    request.getParameter():提取发送过来的参数如
    request.getAttribute()得到的是object,request.getParameter()得到的是String

    post与get的区别:

      post提交数据是隐式的,get是通过在url里面传递的(可以看一下你浏览器的地址栏),用来传递一些不需要保密的数据。
    用get时,传输数据的大小有限制 (注意不是参数的个数有限制),为2K;而post没有此限制

    客户端用cookie保存了sessionID
      客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于登录状态,有相应的权限;如果没有找到对应的sessionID,这说明:要么是我们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过20分钟),session被服务器清除了,则服务器会给你分配一个新的sessionID。你得重 新登录并把这个新的sessionID保存在cookie中。

    客户端没有用cookie保存sessionID
      这个时候如果我们请求服务器,因为没有提交sessionID上来,服务器会认为你是一个全新的请求,服务器会给你分配一个新的sessionID,这就是 为什么我们每次打开一个新的浏览器的时候(无论之前我们有没有登录过)都会产生一个新的sessionID(或者是会让我们重新登录)

    JSP的注释:

    <%-- JSP中的注释,看不见 --%>
    <%
    // 注释,看不见
    /*
    注释,看不见
    */
    %>
    <!--显式注释-->

    URL参数:
      http://127.0.0.1/index.jsp?name=user&password=user其中name和password为URL参数

  • 相关阅读:
    Linux 系统监控和诊断工具:lsof
    C语言基础(21)-C语言编译过程及GCC参数简介
    VS2013-解决VS2013 4996错误
    C语言基础(20)-文件操作(fopen,getc,fclose)
    eclipse-Java compiler level does not match the version of the installed Java project facet.
    C语言基础(19)-结构体,联合体,枚举和typedef
    android studio- Gradle "xxx" project refresh failed
    C语言基础(18)-内存
    C语言基础(17)-作用域
    android.app.Service-android:process=":remote"属性解说
  • 原文地址:https://www.cnblogs.com/liuyanhao/p/4755042.html
Copyright © 2011-2022 走看看