JavaWeb阶段总结

  • HTML
    • 文字排版类标签
      1. 标题标签:h1~h6
      2. 横线标签:hr
      3. 换行标签:br
      4. 段落标签:p
    • 图片标签img

属性:

src:图片的路径

      alt:图片显示不出来的时候,给的文字提示信息

      title:鼠标悬浮提示

    • 清单和超链接
      1. 清单标签
        1. 无序清单:ul

属性type:circle/square/disc

        1. 有序清单:ol

属性type:1/a/A/i/I

        1. 清单项标签:li
      1. 超链接标签a

属性:

href:跳转到哪

target:在哪显示新页面 _self/_blank/framename

    • 表格标签
      1. 表格标签table
      2. 行标签:tr
      3. 单元格标签:td
      4. 表头单元格:th
      5. 表格标题:caption
      6. 合并单元格的步骤:
  1. 确认用哪个属性:跨行合并用rowspan,跨列合并用colspan
  2. 确定属性加在哪个单元格上:加在要合并的单元格里最前边的那个
  3. 确定属性的值:要合并几个单元格,值就是几
  4. 删除被合并掉的单元格

 

    • 框架标签

框架标签,是用来切分页面的。切分谁,就用frameset把谁替换掉

      1. 框架集标签frameset

属性:

      rows:分行。比如rows=”200,*”分成了两行,第一行高200px,第二行占剩余全部

      cols:分列。用法和rows完全一样

frameset里分了几部分,就必须有几个frame标签

      1. 框架标签frame

属性:

      src:要嵌套进来的页面的路径

      name:框架的名称,主要是给超链接标签使用的

    • 表单标签(重点
      1. 表单标签form

method: 表单的提交方式get/post

action:表单提交路径

      1. 表单项标签input
        1. type属性:

text:文本框。使用value属性设置默认值

password:密码框。使用value设置默认值

radio:单选按钮。name相同的radio属于同一组,同组radio互斥。

      在需要默认选中的选项上增加属性:checked=”checked”

checkbox:复选框。name相同的checkbox属于同一组,目的仅仅是方便后台接收参数:request.getParameterValues();

      在需要默认选中的选项上增加属性:checked=”checked”

button:普通按钮

submit:提交按钮

reset:重置控制

image:图片提交按钮,功能和submit完全一样,只是用图片作为按钮

file:文件选择框,默认提交的是文件名称

hidden:隐藏域

        1. name属性:表单项的名称

如果表单项的数据需要提交,就必须有name属性

        1. value属性:作用会随type不同而改变

text/password:value是默认值

radio/checkbox:value表示某一个选项的值,选中哪个选项就提交哪个选项的value值

button/submit/reset:value表示按钮上的提示信息

image:value没有实际意义

file:value是无效的

hidden:value表示隐藏域的值

        1. readonly属性:表示表单项只读,数据不可更改
        2. disabled属性:表示表单项不可用,数据不可更改并且不会提交

 

      1. 下拉框标签select
        1. 下拉框标签:select

name属性:如果下拉框的数据要提交就必须有name属性

multiple属性:固定值multiple,表示下拉框可以多选

        1. 下拉选项标签:option

value属性:表示一个下拉选项的值,选中哪个下拉选项,就提交哪个选项的value值

        1. 默认值设置:

如果默认的下拉模式,默认选中第一个选项。

手动设置默认值:在下拉选项上添加属性:selected=”selected”

      1. 文本域标签textarea

name属性:如果数据要提交就必须有name属性

cols属性:文本域的宽

rows属性:文本域的高

 

文本域的默认值设置:直接写在textarea标签体里边。

  • CSS
    • 引入方式
      1. 内嵌样式/行内样式

      1. 内部样式

在head标签里增加子标签style,把样式写在style标签体里

      1. 外部样式

在head标签里使用link标签来引入外部的css文件

    • 选择器
      1. 基本选择器
        1. 标签选择器  div{样式…}
        2. id选择器    #id值{样式…}
        3. class选择器   .class名称{样式…}

 

优先级:id选择器 > class选择器 > 标签选择器

      1. 层级选择器

多个选择器之间使用空格隔开,表示下级选择器。

空格表示后代,而不是父子关系

div span{样式….}

      1. 属性选择器

选择器[属性名=’值’]{样式…}

    • 常用样式(略)
  • JavaScript

js的作用:用来操作浏览器或者操作html文档的

    • 引入
      1. 内部js

使用script标签,把jsp代码写在script标签体里

      1. 外部js

使用script标签引入外部的js文件

 

js代码在html内部任意位置都可以运行,有一个原则:在不影响页面显示效果的前提下,js越晚加载越好

    • 组成
      1. ECMAScript基本语法规范
        1. 变量定义:var
        2. 数据类型
          • 原始数据类型
  • number类型
  • boolean类型
  • string类型
  • null类型
  • undefined类型
          • 引用数据类型
  • Array数组类型

定义数组:

      var arr = new Array();

      var arr = new Array(3);

      var arr = new Array(“a”, “b”);

 

      var arr = [“a”, “b”];

属性:

      length:用来获取数组的长度,或者设置数组的长度

方法:

      join(分隔符):把数组拼接成字符串

      arr3.concat(arr1, arr2):把多个数组合并成一个

 

  • Math数据工具类

Math.PI

Math.abs():绝对值

Math.ceil():向上取整

Math.floor():向下取整

Math.round():四舍五入

Math.random():取随机数

  • Date日期对象

定义日期对象:var date = new Date();

常用方法:

      toLocaleString();:转换成本地日期字符串

      getTime():获取毫秒值

      setTime():设置毫秒值

  • RegExp正则表达式对象

定义正则表达式:

      var reg = new RegExp(“表达式”);

      var reg = /表达式/;

常用方法:

      reg.test(字符串):校验字符串格式,返回boolean值

        1. 运算符
  • ==和===

==只比较值,值相同就是true

===比较值和类型,都相同才是true

  • &&和||

js里进行boolean类型的逻辑运算,只有&&和||,没有&和|

  • +-*/

+:如果有字符串,是拼接字符串。如果全部都是数据,是加法运算

-*/:如果有字符串,会尝试转换成数据再运算。如果转换不成功,结果NaN

        1. 逻辑语句

if判断和Java的if判断不同。

if判断时,参数类型:

      boolean:

      number:0是false,非0是true

      string:””是false,非””是true

      null:始终是false

      undefined:始终是false

        1. 函数(重点
          • 普通函数

function add(a, b){

return a+b

}

add(3, 5);

          • 匿名函数

var fn = function(a, b){

      return a+b;

}

匿名函数应用方式1:fn(3, 5);

匿名函数应用方式2:把匿名函数作为另外一个函数的实参传递进去

      setTimeout(function(){}, 2000);

        1. 事件(重点
          • 常见事件:

onclick/onload/onsubmit/onchange

          • 绑定事件
  1. 事件和响应行为完全嵌入到事件源标签里

  1. 通过js动态绑定事件(派发事件)

document.getElementById(“btn1”).οnclick=function(){

      alert();

}

      1. BOM用来操作浏览器的
        1. 有哪些bom对象
  • window浏览器窗口对象,是所有bom对象的顶级对象
  • location浏览器地址信息对象,可以用来获取或者设置网址
  • history浏览器历史记录信息对象,可以用来进行历史记录切换
  • screen屏幕显示信息对象,主要是前端用来做一些显示上的特效
  • navigator浏览器信息对象,只读的。可以用来获取浏览器的内核、版本、操作系统等信息
        1. window对象
  • 提供了一些弹窗方法

普通弹窗alert()

确认弹窗confirm()

输入弹窗prompt()

  • 提供了定时器

执行多次的定时器:

      var timer = setInterval(函数对象, 间隔毫秒值);

      clearInterval(timer);

执行一次的定时器(延时器)

      var timer = setTimeout(函数对象, 延迟毫秒值)

      clearTimeout(timer);

  • 提供了一些全局函数

parseInt():转换成整数

parseFloat():转换成小数

eval():把字符串作为js代码来执行

encodeURI():编码字符串

decodeURI():解码字符串

        1. location对象
  • 获取当前网址:

var url = location.href;

  • 设置当前网址(网址跳转):

location.href = “网址”;//在当前窗口打开页面

window.open(“网址”);//在新窗口打开页面

        1. histroy对象

前进一步:forward()

后退一步:back();

切换n步:go(n); n是正数前进n步;n是负数后退n步

      1. DOM用来操作html文档的
        1. 标签操作
  • 获取标签:

document.getElementById

document.getElementsByName

document.getElementsByTagName

document.getElementsByClassName

  • 创建标签

var divElement = document.createElement(“div”);

  • 插入标签

父标签对象.appendChild(子标签对象);

  • 操作标签体

获取标签体:标签对象.innerHTML

设置标签体:标签对象.innerHTML = “标签体的内容”

        1. 属性的操作
  • 获取属性:

var value = 标签对象.属性名;

var value = 标签对象.getAttribute(“属性名”);

  • 设置属性:

标签对象.属性名 = 值;

标签对象.setAttribute(“属性名”, 值);

  • jQuery

jQuery是一个js框架,用来简化js代码的。提供了更简单的dom,event, animate, ajax的简易操作。

    • dom操作
      1. 获取标签对象(jQuery选择器:重点
        1. 基本选择器(重点
  • 标签选择器  $(“div”)
  • id选择器   $(“#btn1”)
  • class选择器 $(“.cls”)
        1. 层级选择器

祖孙选择器$(“a b”)

父子选择器$(“a>b”)

兄弟选择器$(“a+b”)

弟弟选择器$(“a~b”)

        1. 属性选择器

$(“a[attr]”):包含attr属性的所有a元素

$(“a[attr=’v’]”):attr属性值是v的a元素

$(“a[attr^=’v’]”):attr属性值以v开头的a元素

$(“a[attr$=’v’]”):attr属性值以v结尾的a元素

$(“a[attr*=’v’]”):attr属性值中包含v的a元素

$(“a[attr!=’v’]”):attr属性值不等于v的a元素

$(“a[attr=’v’][attr1]”):复合属性选择器

        1. 基本过滤选择器

:first 第一个

:last 最后 一个

:even 索引为偶数的

:odd 索引为奇数的

:not(.cls)  排除掉selector的结果

:eq(n) 索引为n的

:gt(n) 索引大于n的

:lt(n) 索引小于n的

:animated  获取动起来的动画

:header  获取所有标题h1~h6

        1. 表单属性选择器(重点

:enabled  获取可用 的表单项

:disabled  获取不可用的表单项

:selected  针对下拉选项option的,获取被选中的option标签

:checked  针对radio和checkbox的,获取被选中的单选或多选项

      1. 其它dom操作
        1. 操作标签体/文本/值

操作标签体:html();

操作文件:text()

操作值:val()

        1. 操作css:

$(“div”).css(“color”,”red”);

$(“#div1”).css(“color”);

        1. 操作html属性

attr(“属性名”,属性值);/attr(“属性名”)/removeAttr(“属性名“)

prop(“属性名”,属性值);/ prop (“属性名”)/removeProp(“属性名“)

 

如果是操作selected和checked属性,必须使用prop相关方法。其它属性优先使用attr,如果不行再用prop

        1. 操作class属性

添加class:addClass()

删除class:removeClass()

切换class:toggleClass()

        1. 创建标签

$(“

aaaa
”)

        1. 插入标签

插入到内部最后:append

插入到内部最前:prepend

插入到前边:before

插入到后边:after

 

上边四个有反向插入的方法

appendTo

prependTo

insertBefore

insertAfter

        1. 删除标签:remove()/empty()
    1. 事件操作
  1. js事件名称带on,jQuery事件名称不带on
  2. js事件是属性,jQuery事件是方法
  3. js响应行为是事件属性的值,jQuery响应行为是事件方法的实参

 

$(“#btn1”).click(function(){

      alert();

});

    • jQuery的循环遍历
      1. 原始循环遍历for循环
      2. jQuery的全局each方法

$.each(被循环遍历的对象, function(index, element){

       //index  是当前对象的索引

       //element  是当前对象

       //this  是当前对象

});

      1. jQuery对象的each方法

jQuery对象.each(function(index, element){

       //index  是当前对象的索引

       //element  是当前对象

       //this  是当前对象

});

    • 插件validate
  1. 引入文件:jQuery,validate插件,语言js(可不引)
  2. 基本语法

jQuery表单对象.validate({

      rules:{

            表单项的name:{

                  校验规则名称:规则的值,…

                  校验规则名称:规则的值

}

},

      messages:{

            表单项的name:{

                  校验规则名称:提示信息,…

                  校验规则名称:提示信息

}

}

});

  1. 自定义提示信息的位置

  1. 自定义校验规则

$.validator.addMethod(“规则名称”,function(value, element, params){

            //value:要校验的值

            //element:要校验的表单项标签对象

            //params:校验规则的值

 

            return true表示校验通过;

}, “默认提示信息”);

  • Bootstrap
    • 引入的文件

css/fonts/js

页面上引入的文件:

      bootstrap.css/jQuery.js/bootstrap.js

    • 栅格系统

用来做页面布局,本质仍然是div+css。在应用上更接近于table表格布局

      1. 容器

container:宽度随设备类型而改变

      lg:大型设备

      md:中型设备

      sm:小型设备

      xs:超小型设备

container-fluid:始终宽100%

      1. 行row

一行分成12份

      1. 单元格col-*-*

第一个*:设备类型

第二个*:单元格占几份

  • Http协议和tomcat
    • HTTP协议

Http协议包括两部分:请求和响应。没有请求就没有响应。

      1. http请求
        1. 请求行

请求方式  请求资源  协议版本

POST  /web/login.html  HTTP/1.1

        1. 请求头

格式: key:value  一个键值对是一个请求头,一次请求有n多个请求头。

        1. 请求体

格式: name=value&name=value…

提交的post表单参数。并不是任何时候请求体都有数据:

 post提交,并且有参数的时候。

      1. http响应
        1. 响应行

格式: 协议版本 响应状态码 响应状态描述

比如    HTTP/1.1  200 OK

        1. 响应头

格式:  key:value  一个键值对是一个响应头,一次响应可以有n多个响应头

        1. 响应体

响应的正文内容。浏览器请求什么,就响应什么。

    • web开发中常见的概念
      1. 软件架构
        1. C/S架构  client/server架构
        2. B/S架构  browser/server架构
      2. 软件资源

静态资源:html,js,css,  gif

动态资源:一个资源不同人访问,不同时候访问结果不同。jsp,Servlet

      1. 常见的web应用服务器软件
  • tomcat:apache免费小型服务器软件
  • weblogic:oracle的大型收费服务器软件
  • websphere:IBM大型收费服务器软件
    • tomcat

 

  • Servlet(重点
    • Servlet接口
      1. API和生命周期
        1. init(ServletConfig config)初始化方法

Servlet被创建时调用。

参数:ServletConfig是Servlet的配置信息对象(了解)

  1. 获取Servlet的名称
  2. 获取初始化配置信息
  3. 获取ServletContext对象
        1. service(ServletReqest req, ServletResponse resp)

业务处理方法,每次调用Servlet都必定会执行这个方法。

参数:

      代表http请求的request对象

      代表http响应的response对象

        1. destory()
        2. 生命周期

何时创建:默认第一次访问时,服务器软件创建,创建时必定会执行init,一个Servlet类只有一个对象存在。

何时销毁:服务器关闭,服务器软件执行destory方法

每次访问必定会执行的方法是:service方法

      1. 配置信息
        1. servlet标签
          • servlet-name:Servlet的名称,不重复即可
          • servlet-class:servlet的全路径名称,服务器根据这个值通过反射创建对象
          • init-param:初始化参数配置,可以有多个

param-name:参数名称

      param-value:参数值

          • load-on-startup标签:用来配置Servlet的创建时机

值是自然数。

0:表示默认,默认第一次访问时创建

正整数:表示服务器一启动就创建Servlet对象,数值越小优先级越高

        1. servlet-mapping标签
          • servlet-name:给哪个Servlet配置访问路径
          • url-pattern:Servlet的访问路径配置,可以有多个url-pattern
  • 完全匹配  /demo
  • 目录匹配 以/开头,以*结尾  /aa/bb/*
  • 扩展名匹配 以*开发,以扩展名结尾  *.jsp
    • HttpServlet
  1. 创建Java类,继承HttpServlet父类(用eclipse菜单创建,会自动生成配置信息)
  2. 重写doGet/doPost方法

 

继承体系:

LoginServlet extends HttpServlet

HttpServlet extends GenericServlet

GenericServlet implements Servlet

    • ServletContext

代表整个web应用的对象,服务器软件在启动服务时为每个web应用创建一个ServletContext对象。

      1. 获取方式

ServletContext context = this.getServletContext();

      1. 作用
        1. 获取全局的初始化参数

String value = context.getInitParameter(String name);

        1. 获取web资源的实际路径

String realPath = context.getRealPath(服务端路径);

        1. 是一个域对象(重点
  • 域对象必定会有三个方法:

setAttribute

getAttribute

removeAttribute

  • ServletContext域对象的生命周期:

何时创建:服务器启动时

何时销毁:服务器关闭时

作用范围:整个web应用

  • response

代表http响应,主要是用来由服务端向客户端发送数据

    • 设置响应行数据

设置响应状态码:

       response.setStatus(int code);

设置错误状态码:

      response.sendError(int code);

    • 设置响应头数据

设置响应头:

      response.setHeader(String name, String value);

      response.setIntHeader(String name, int value);

      response.setDateHeader(String name, long value);

追加响应头:

response.addHeader(String name, String value);

      response.addIntHeader(String name, int value);

      response.addDateHeader(String name, long value);

 

    • 设置延迟刷新:响应头refresh

response.setHeader(“refresh”, “秒数;url=客户端地址”);

    • 重定向(重点:应用

response.sendRedirect(String  客户端路径);

    • 设置响应体数据
      1. 设置字符型响应体

PrintWriter writer = response.getWriter();

 

中文字符型响应体乱码

原因:response缓冲区默认iso-8859-1,要求缓冲区编码和客户端解码方式一致

解决:

      response.setContentType(“text/html;charset=utf-8”);

      1. 设置字节型响应体

ServletOutputStream os = response.getOutputStream();

      1. 文件下载
  1. 告诉客户端以附件的形式来处理响应体的内容

response.setHeader(“Content-Disposition”,”attachment;filename=另存主的文件名称”);

  1. 告诉客户端传递过去的数据的MIME类型

response.setContentType(context.getMimeType(filename));

  1. 使用输入流读取文件,写到 ServletOutputStream里

 

下载文件时,另存为的文件名称,中文乱码:

原因:通过响应头告诉客户端的文件名称,但是响应头只支持iso-889-1

解决:

      先对文件名称进行编码,按照浏览器的解码方式进行编码。

      /**

 * 自动根据不同浏览器对文件名称进行编码,避免文件下载时中文文件名称乱码

 * 

 */

public String encodeFilename(HttpServletRequest request, String filename){

       try{

              String agent = request.getHeader("User-Agent");

              if (agent.contains("MSIE")) {

                     // IE浏览器

                     filename = URLEncoder.encode(filename, "utf-8");

                     filename = filename.replace("+", " ");

              } else if (agent.contains("Firefox")) {

                     // 火狐浏览器

                     BASE64Encoder base64Encoder = new BASE64Encoder();

                     filename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";

              } else {

                     // 其它浏览器

                     filename = URLEncoder.encode(filename, "utf-8");                         

              }

       }catch(Exception e){

              e.printStackTrace();

       }

 

       return filename;

}

  • request(重点

代表http请求的request对象,主要是用来接收客户端传递过来的数据

    • 获取请求行的数据

获取请求方式 :request.getMethod()

获取请求资源:

      request.getRequestURL()

      request.getRequestURI()

获取web应用的名称:request.getContextPath();

    • 获取请求头的数据

String value = request.getHeader(String name);

Enumeration values = request.getHeaders(String name);

    • 获取请求参数

获取单值参数:String value = request.getParameter(String name);

获取多值参数:String[]  values = request.getParameterValues(String name)

获取参数map:Map map = request.getParameterMap();

 

获取中文参数乱码:

  1. post乱码
    1. 原因:request默认使用iso-8859-1解码
    2. 解决:指定request以utf-8的方式解码

request.setCharacterEncoding(“utf-8”);

  1. get乱码
    1. 原因:是在请求行里传递的参数,只支持iso-8859-1
    2. 解决:先获取乱码,然后手动转码还原

String value = request.getParameter(String name);

value = new String(value.getBytes(“iso-8859-1”), “utf-8”);

    • 域对象和请求转发(重点
      1. request域对象

必定有三个方法:setAttribute/getAttribute/removeAttribute

生命周期:

      何时创建:一次请求开始

何时销毁:一次请求结束

作用范围:一次请求转发链中

      1. reuqest实现请求转发

request.getRequestDispatcher(服务端路径).forward(request, response);

  • 会话技术cookie/session
    • 会话技术

用来保存某一个客户端和服务端之间,会话数据的技术。

    • cookie

把会话数据保存在客户端

      1. 怎样创建Cookie

Cookie cookie = new Cookie(String name, String value);

        1. 设置有效期

默认有效期:一次会话期间

手动设置有效期:

 cookie.setMaxAge(int seconds);

        1. 设置有效路径

默认有效路径:生成Cookie的资源所在的路径是有效路径,只有浏览器在访问有效路径内的资源时,才会携带Cookie。

手动设置有效路径:

      cookie.setPath(有效路径);

      1. 怎样发送到客户端

response.addCookie(cookie);

      1. 怎样接收客户端携带的cookie

Cookie[] cookies = request.getCookies();

      1. 删除客户端已经存在的Cookie

创建一个同name,同path,同domain的Cookie,设置有效期为0,发送到客户端覆盖已有的Cookie。

    • session

把会话数据保存在服务端,sessionid使用Cookie保存:session依赖于Cookie

      1. 怎样获取session对象

HttpSession session = request.getSession();

 

什么时候获取原有的session:客户端的JSESSIONID和服务端的session对应的上的时候

什么时候创建新的session:客户端的JSESSIONID和服务端的session对应不上的时候。

      1. 怎样向session中存取数据(域对象:重点

必定有三个方法:setAttribute/getAttribute/removeAttribute

生命周期:

      何时创建:request.getSession(),客户端的JSESSIONID和服务端的session对应不上

      何时销毁:服务器非正常关闭/会话超时/手动销毁session.invalidtae()

作用范围:一次会话期间

    • 会话技术应用场景

购物车

登录状态

验证码

  • JSP
    • 原理

JSP文件不能直接运行,必须部署到服务器里。

jsp文件-->翻译-->java文件(Servlet)-->编译-->class文件-->加载并运行class

    • 基本语法
      1. 嵌套Java脚本
  • <%= Java表达式 %>向页面输出内容

会被转换成Servlet的service方法里:out.write(Java表达式)

  • <% Java代码块 %>

会被原封不动的拷贝到Servlet的service方法里

  • <%! Java声明 %>

会被原封不动的拷贝成为Servlet的成员内容

      1. 注释
  • HTML注释
  • Java注释
  • JSP注释  <%-- JSP注释 --%>
    • 指令

作用在翻译期间,指导服务器软件怎样去翻译jsp

<%@ 指令名称 属性=“值” 属性=“值” %>

      1. page指令

指导服务器软件翻译jsp文件。写在jsp第一行

常用属性:

      language:jsp支持的脚本语言,仅支持java

      contentType:等价于response.setContentType()

      pageEncoding:jsp文件实体的编码

      import:等价于Java类里的import,是page指令里唯一一个可以出现多次的属性

      session:true|false,jsp是否内置session对象。默认true

      errorPage:错误页面路径。如果jsp出现异常,会显示错误页面的内容

      isErrorPage:true|false,给错误页面使用的。如果为true,jsp会内置exception对象

      1. include指令(静态包含)

用来把另外一个页面包含到当前页面中。

<%@ include file=”子页面的服务端路径”%>

      1. taglib指令

用来引入外部标签库

<%@ taglib uri=”” prefix=”” %>

    • 内置对象
      1. 有9个内置对象

request

response

sessoin

application

pageContext

page

config

out

exception

      1. out对象

用来向页面输出内容的,指向自己的缓冲区。当服务器响应时会flush到response缓冲区。

      1. pageContext对象(域对象)
        1. 是域对象

何时创建:JSP对应的Servlet被调用时

何时销毁:JSP对应的servlet被调用完成时

作用范围:当前jsp页面中

        1. 可以获取其它8个内置对象
    1. 动作(jsp标签)
      1. include标签(动态包含)

用来把另外一个页面包含到当前页面中

      1. 静态包含和动态包含的区别(面试
  1. 包含的时机不同:静态包含是翻译期包含,动态包含是运行期包含
  2. 包含的请求不同
  3. 生成的文件数据不同:静态包含生成一个Java文件,动态包含生成多个Java文件
  • EL

EL表达式主要是用来代替JSP中<%=Java表达式%>

基本语法:${requestScope.key} 或者 ${requestScope[“key”]}

    • 从域里取数据显示到页面上

${key} 等价于 <%=pageContext.findAttribute(“key”) %>

从小到大开始获取,如果pageScope没有则向上一层域对象里面寻找

    • 可以进行运算
      1. 基本的运算+-*/

${number+1}

      1. 逻辑运算

使用关键字:gt, lt, ge, le, eq, ne, and, or

使用运算符:>, <, >=, <=, ==, !=, &&, ||

      1. 可以判空empty

v_null: true
v_number: false
v_empty_string: true
v_notEmpty_string: false
v_bean: false
v_empty_list: true
v_notEmpty_list: false
v_empty_map: true
v_notEmpty_map: false

      1. 三元运算符

${age>18?”成年”:”未成年”}

    • 有11个内置对象
      1. 4个域对象:

pageScope, requestScope, sessionScope,applicationScope

      1. 两个 请求参数对象:

param

paramValues

      1. 两个请求头对象:

header

headerValues

      1. 一个pageContext对象

${pageContext.request.contextPath} 获取web应用名称

      1. 一个初始化参数对象:initParam
      2. 一个cookie对象
  • JSTL
    • 引入
  1. 导包
  2. 在JSP里引入标签库

<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>

 

JSTL本身不具备获取数据,数据运算的能力,需要借助于EL表达式

    • if判断

    判断为true时,这里的内容会显示

属性:

      test:使用EL表达式进行判断

 

    • forEach循环遍历
      1. 基本循环

      ${i}

 

属性:

      var:循环遍历的变量,变量的值是被保存到了pageScope域中

      begin:从几开始循环

      end:循环到几结束

      step:每次循环加几

      1. 增强循环

   数据是:${item}

      是否每一次循环:${vs.first}

    是否最后一次:${vs.last}

      当前第几次(序号):${vs.count}

 

属性:

      items:被循环遍历的对象,通常是使用EL从域中取出来的

      var:循环遍历的变量,变量的值被保存到了pageScope域中

      varStatus:循环状态对象,里边保存了当前循环第几次,是否第一次,是否最后一次

    • Java开发模式
      1. MVC模式

M:Model模型层,通常指JavaBean

V:View 视图层,通常指页面

C:Controller控制层,通常指Servlet

      1. JavaEE开发三层架构

web层:web包

service层:service包

dao层:dao包

 

domain包:放JavaBean

utils包:放工具类

你可能感兴趣的:(JavaWeb,web,java,javaweb)