zoukankan      html  css  js  c++  java
  • jsp servlet基础复习 Part1

    jsp和servlet的一些基础知识整理,用于备忘。

    一、jsp与servlet的基本关系
    1、jsp-->web容器-->servlet-->加载进容器的虚拟机执行-->输出执行结果给浏览器端
      在这个过程,所有位于<%%>之外的值,都被认为是out.println()中的内容进行直接输出。详细理解看代码
    <html>
    <%
    	//例子说明:servlet和jsp的关系
    	boolean b = false;
    	if(b){
    %>
    	这里是内容一
    <%
    	}else{
    %>
    	这里是内容二
    <% 
    	}
    %>
      
      <body>
        jsp_servlet. <br>
      </body>
    </html>
    

      上面的代码和下面的代码一个意思

    <html>
    <%
    //例子说明:servlet和jsp的关系
        boolean b = false;
        if(b){
        out.println("这里是内容一");
        }else{
        out.println("这里是内容二");
        }
    %>
      <body>
        This is my JSP page. <br>
      </body>
    </html>

    <%%>标签外的一切字符,jsp的web容器不会特殊处理,只是单纯地放进输出流out(printWriter)中输出给浏览器

    标签中的内容,是java代码,web容器处理完后,返回结果给浏览器

    标签外和标签内的所有字符经过web容器处理后,得出一个html文件,这是浏览器所接收到的最终文件

    2、执行说明

      顺序:浏览器请求-->jsp文件-->web服务器-->解析jsp为java文件-->容器j的re检查java文件是否有编译错误-->编译java文件,得到.class文件-->jvm加载执行-->响应浏览器

      web容器解析jsp时,一般先检查是否已经存在了最新(表明jsp文件并没有被改变)编译的文件某某servet.class,如果是,则不重新编译jsp文件,否则重新编译jsp文件。

    二、处理数据(处理表单数据以及url传参数据)的总结

      1、通常,我们用getParameter(参数名字):获取对应的form(url)中某个name属性值。当多个属性值一样时,只能获取第一个属性值。

      2、getParameterValues(参数名字):获取所有form或者url的name属性值,返回一个数组。当多个属性值的name一样时,可用该方法。这个方法可用来处理多选框和复选框的数据。

      3、getParameterName:获取参数名字,返回对应的枚举,通过类似迭代器的方式遍历枚举便可得到每个参数名字的的对应字符类型。

    三、javascript中获取(获取用词可能不太正确)jsp数据

      1、javascript(这里指的是客户端的js脚本,下面简称脚本),jsp,java三者的关系:

        首先,三者的顺序:jsp-->转变为java代码-->web容器将之变为html代码-->浏览器-->某个时间触发,运行脚本。

        显然,js脚本是在jsp代码(java)代码执行完(而且两者执行的地方不同,脚本在浏览器执行,jsp,java代码在web服务器的web容器中执行)后执行,所以,理论上说,jsp的参数不可能传给脚本,因为两者执行地方就不同。

        所以,要达到类似的效果,只能在jsp中混写js脚本代码。当然,更推荐的方法是,将参数放在某个隐藏表单区域,再通过js的dom方法获取对应的参数值。

      2、通常,以前判断表单是否提交的笨方法是:getParameter(表单参数名),获得结果是null,表明无对应表单提交。现在,可用一下方法代替:getMethod.equals("post" or "get"),返回布尔值,判断是否提交了表单。

    以上是复习一的归纳内容,如有不妥地方,欢迎指正。

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/lcplcpjava/p/6502789.html
Copyright © 2011-2022 走看看