一、JSP了解

      JSP(java server pages,服务器页面),可理解为HTML+ Java = = JSP,它可生成动态的HTML(拼标签)。是以.jsp为后缀的文件,

   内容是以标签为主体,可以内联java代码,本质上是servlet。

二、JSP文件创建

  第一步:创建一个web项目,步骤见https://www.cnblogs.com/qinqin-me/p/12256095.html

    第二步:在项目文件夹下的webRoot下创建.jsp结尾的文件

    第三步:jsp文件的默认编码为:ISO-8859-1,需修改为utf-8,步骤如下:

        点击Window->点击Preference->在搜索框中输入jsp->找到JSP并点击->在右侧的Encoding下拉框中向上翻选中UTF-8

三、JSP引擎

  大概了解

      JSP引擎和JSP容器指的同一样东西,他们都指用来统一管理和允许Web应用程序的软件,常见的JSP引擎有Tomcat、JRun等,最常用的就是Tomcat。

   安装JSP引擎的计算机,其实就是Web服务器。当浏览器要访问一个JSP文件时,JSP文件会经过JSP引擎转换为一个Servlet,被编译成class,然后通过class

   生成的的对象给用户进行响应。

    JSP执行流程

      首先请求JSP引擎,将文件生成java文件,再将java文件编译成class文件,再通过class创建对象,然后给用户响应

四、JSP页面组成部分

  1.静态内容

  2.指令

    JSP指令用来设置整个JSP页面相关的属性,指令可以有多个属性,以键值对的形式表示,并用空格隔开

    1)与页面相关的page指令:设置页面相关的属性

      <%@page 属性1 = "属性值1"  属性2 = "属性值2"  属性3 = "属性值3" ...%>

      

    2)与文件引入相关的include指令:将一个外部文件嵌入到另一个JSP或HTML文件,同时解析这个页面中的JSP语句

      <%@include file = "hh.html"%>

    3)与标签相关的taglib指令:使用标签库定义新的自定义标签

      <%@taglib url = "tablibburl" prefix = "tagpre"%>

      

      这里对于以JSTL标签库为例的使用可看:https://www.cnblogs.com/qinqin-me/p/12339977.html

  3.表达式

    提供的是一种特殊的JSP语法格式,用来将java中的变量输出到页面上,是出现在__jspService方法中的

    在Servlet中所生成的代码为:

      out.print(变量名);

    在JSP文件中使用如下:

       <%=变量名或是有返回值的方法%>

  4.小脚本

    在JSP文件中编写的java代码,在引擎解析后,也是出现在__jspService方法中的

    在JSP文件中使用如下:

      <%

        <%--写任何的java代码(可以是定义的变量,编写的java语句,不能定义方法)--%>

        show();

        System.out.println("这就是小脚本的作用");

      %>

  5.声明

    其实就是Java程序中的成员声明,可以用来声明成员变量、成员方法。此处的声明都是出现在类体中的而不是出现在方法体中的

    在JSP文件中使用如下:

      <%!

         private Integer num = 10;

         public void show(){

           System.out.println(num);

         }

      %>

  6.注释

     JSP注释分三种:

        HTML注释:(客户端可见)

          <!--html注释-->

        JSP注释:(客户端不可见)

          <%--JSP注释--%>

        JSP脚本注释:

          //单行注释

          /*多行注释*/

五、案例

  1.JSP代码

   <body>
<%
List<order> list = DealWithorder.findAll();
%>
<input type = "text">
<input type = "button" value = "搜索">
<table>
<tr>
<th>订单表
<input type = "button" value = "全删">
<input type = "button" value = "添加">
</th>
</tr>
<tr>
<td>下单时间</td>
<td>姓名</td>
<td>详细地址</td>
<td>预留电话</td>
<td>车牌号码</td>
<td>故障描述</td>
<td>预约时间</td> </tr>
<%
for(order o : list){
System.out.println(o);
%>
<tr>
<td><%= o.getTime() %></td>
<td><%= o.getName() %></td>
<td><%= o.getAddress() %></td>
<td><%= o.getPhonenum() %></td>
<td><%= o.getCarnum() %></td>
<td><%= o.getProblem() %></td>
<td><%= o.getDatetime() %></td>
<td>
<input type = "button" value = "删除">
<input type = "button" value = "修改">
</td>
</tr>
<%
}
%>
<tr>
<td colspan = "8">
当前 页/共 页 首页 上一页 1 2 3 ... 下一页 尾页
</td>
</tr>
</table>
</body>

  2.页面效果

      

六、JSP九大内置对象

  大概了解

      内置对象(又称隐含对象),在JSP中不需要创建(由服务器/容器创建),可以直接使用的对象

  内置对象

      out:

        out对象是JSPWriter类的实现,是向客户端输出内容常用的对象

        类型:JSPWriter

        作用:向客户端进行响应字符打印流

      request(四大作用域对象之一,important):

        类型:HttpServletRequest

        作用:请求对象,包含了请求信息

        getParameter("key");获取用户提交的表单信息

        setCharcterEncoding("字符集");设置请求编码格式,防止乱码

        setAtrribute("key","value");将数据保存到Request范围内的变量

        forward(String url);转发

        getParametersValues(String name);返回包含参数name所有值的数组

      response(important):

        类型:HttpServletResponse

        作用:响应对象,用来给用户进行响应

          addCookie();将一个Cookie对象发送到客户端

          sendRedirect(String url);重定向

      session(四大作用域对象之一,important):

        类型:HttpSession

        作用:会话对象,用来进行数据的共享和会话的跟踪

        setMaxInactiveInterval(int num);设置session对象的有效活动时间

        invalidate();销毁当前的session

      application(四大作用域对象之一,important):

        类型:ServletContext

        作用:全局的Servlet上下文对象,每个应用只有一个,从应用启动,就创建了,直到应用消亡,对象才被释放。

      config:

        类型:ServletConfig

        作用:Servlet配置对象,较少使用

      page:

        类型:Object

        作用:指的当前JSP页面对象

      pageContext(四大作用域对象之一,important):

        类型:pageContext

        作用:页面的上下文,用来在一个页面中进行数据的共享与通信

      exception:    

        类型:Throwable

        作用:常用于错误处理的页面,用来收集其他页面产生的错误信息,只有isErrorpage="true"时,才会产生这个对象

七、JSP四大作用域

  大概了解

        为了页面、请求和用户之间传递和共享数据,JSP提供了四个不同的作用域:pageContext(页面作用域)、request(请求作用域)、

      session(会话作用域)、application(应用程序作用域),这些作用域规定了数据可以传递和共享的范围以及数据的存活时间。

    四大作用域(由上向下,作用域范围由小到大)

      pageContext:一个页面

      request:一个请求(可能包含多个页面)  

      session:一次会话(可能包含多次请求,默认数据存储时间30分钟)

      application:一次服务(包含多次会话)

      常用方法:

        setAtrribute("key","value");将数据保存在对应作用域范围内的变量

        Object val = getAtrribute("key");将数据从对应作用域范围内取出来

        removeAtrribute("key");将指定数据从对应作用域范围内的删除

     1.添加数据到对应的作用域

      

      2.将数据从对应的作用域取出来

      

    3.方式二取值结果(从作用域小的先取值)

      

    4.将数据转发到页面

      

      

      

     5.将数据重定向到页面

      

      

      

    6.请求转发和请求重定向的区别

      请求重定向:客户端行为,response.sendRedirection("redirect.jsp");从本质上等于两次请求,前一次的请求对象不会保存,地址栏的url地址会改变

      请求转发:服务器行为,request.getRequestDispatcher("forward.jsp").forward(request,response);是一次请求,转发后请求对象会保存,地址栏和url地址不会改变

八、EL表达式

     用于快速从域对象中取出信息,并输出至网页

     格式:

       取出基本数据类型的格式:${key}

       取出对象的属性的格式:

            ${对象的key.属性名}

       取出数组/集合中对象的属性值:

              方式1:${数组的key[下标].属性名称}

              方式2:${数组的key[下标]["属性名"]}

              方式3:${数组的key[下标][属性名的key]}

        EL表达式获取数据流程:

        采用就近原则,按照四大作用域由小到大的顺序依次取数据。

九、JSP的六大动作

  include动作

    用于引入jsp文件,在转换时期,是没有引入的,只有当执行到include代码的时候才会被动态的编译载入

    <jsp:include page = "引用文件的地址" flush = "false"></jsp:include>

    

    include动作与include指令区别:

       include指令是JSP程序的转换时期,将引入的文件嵌入,然后容易进行编译 

  userbean、setProperty、getProperty动作

    用于给实体对象赋值

    <jsp:userbean id = "别名"  class = "全限定名" scope = "作用范围" />

    <jsp:setProperty property = "属性名称" name = "别名" value = "值"/>

    <jsp:getProperty property = "属性名称" name = "别名" />

  forward动作、param动作

    <jsp:forward page = "转发目标文件的地址">

      <jsp:param value = "值" name = "别名"/>

      <jsp:param value = "值" name = "别名"/>

    </jsp:forward>

  

13-Java-JSP知识梳理的更多相关文章

  1. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  2. Java Web知识梳理

    今天给内部做了个培训,貌似搞错了对象,不该对新人讲这么原理性的东西. anyway,还是放上来吧,不知道有没有人能理清其中的逻辑 ^ _ ^ 问题:为什么要用tomcattomcat: servlet ...

  3. 《面试补习》- Java集合知识梳理

    一.ArrayList ArrayList 底层数据结构为 动态数组 ,所以我们可以将之称为数组队列. ArrayList 的依赖关系: public class ArrayList<E> ...

  4. 新手上路---Java学习知识梳理

    我随笔 我相信也有那么一些人跟我一样,脱下军装后对未来感到迷茫,不知所措甚至怀疑起自己的能力,自身体会的经历过才能明白其中的辛酸!归咎一切:心态,信心,自信!再穷不过乞讨,不死终将出头.好了,闲言碎语 ...

  5. Java基础知识梳理《一》

    一.Java数据类型(简单称之为“四类八种”) java 基本的数据类型长度都是固定的,好处是在实现跨平台时就统一了. 1.整型 byte short int long (分别是1,2,4,8个字节) ...

  6. Java简单知识梳理

    1. Java是单根继承结构:每个类都继承于Object类 ,这也就保证了每个对象都具备某些功能 2. Java类权限关键字: public -> protected -> default ...

  7. java基础知识一览(二)

    一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...

  8. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  9. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. linux下定时网站文件备份和数据备份以及删除旧备份标准代码

    直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash        解释:shell脚本标准头 cd  网站文 ...

  2. 【易懂】斜率DP

    前言 首先此篇文章是为低年级的朋友准备的,不涉及什么深奥的知识,比如线性规划之类的.仔细看,不要以为自己学不会,看不懂,只要你会DP并打过一些题目而且会单调队列优化DP,斜率DP离你就不远了---.这 ...

  3. 剑指offer-面试题27-二叉树的镜像-二叉树

    /* 题目:输入一个二叉树,输出该函数的镜像. */ /* 思路: 基础条件:树为空,或只有一个节点. 其它:递归交换二叉树的左右子树. */ void Mirror(TreeNode *pRoot) ...

  4. CF895C Square Subsets [线性基]

    线性基的题- 考虑平方数只和拆解质因子的个数的奇偶性有关系 比如说你 \(4\) 和 \(16\) 的贡献都是一样的.因为 \(4 = 2^2 , 16 = 2^4\) \(2\) 和 \(4\) 奇 ...

  5. Codeforces Round #622 (Div. 2) C2 - Skyscrapers (hard version) 单调栈

    从左往右扫,找到比第i个小的第一个数字,l[i] = l[last] + (i - last) * m[i],用单调栈O(n)维护这个过程,再从右往左扫,同理可以算出r数组,注意一下long long ...

  6. BLE直接Data channel抓包方法汇总

    之前一致在做一些有关与BLE安全研究的“基础设施建设”工作,我们知道,在BLE进入跳频之后,所有的固定标志都会消失,但是是不是意味着没办法了?不是的.我会提出一些恢复出来的方法. 首先,前导码分析,B ...

  7. C# GZip Compress DeCompress

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. Visual Studio Code 搭建 C/C++开发环境方法总结

    之前看错资料踩了不少坑,先将可行经验总结如下: 1. 下载 Visual Studio Code 并安装.地址:https://code.visualstudio.com 2. 安装 C/C++插件与 ...

  9. 使用Xpath爬取酷狗TOP500的歌曲信息

    使用xpath爬取酷狗TOP500的歌曲信息, 将排名.歌手名.歌曲名.歌曲时长,提取的结果以文件形式保存下来.参考网址:http://www.kugou.com/yy/rank/home/1-888 ...

  10. JQ input输入框回车生成标签,可删除,并获取标签的值

    在网上找的,效果如下 html代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title&g ...