页面导航

有两种跳转页面的方法。重定向和请求转发

两者区别:

请求转发(forward) 重定向(rerect)
请求服务次数 1 2
是否保留第一次请求request范围的属性 保留 不保留
地址栏的请求URL是否改变 不变 改变,相当于在地址栏重新输入URL按下回车键

说明的例子:

  • 请求转发:张三去银行办理业务,在窗口A办理,窗口A的业务员发现自己无权操作,便把张三的业务交给其他人去完成
  • 重定向: 张三去银行办理业务,在窗口A办理,窗口A的业务员发现自己无权操作,提示张三去窗口B办理

重定向

重定向,客户端实际上进行了两次请求,在第一次请求,获得到了一个特殊的response,没有任何内容,客户端接收到此请求,会修改location,向新的location再次发送请求

重定向(response),会丢失request的数据,而sension里面的数据不会丢失

应用程序的根目录(上下文) request.getContentPath()

  1. // "/" 是tomcat的根目录 (http://localhost:8080/)
  2. response.sendRedirect("url")
  3. // 应该这样写:
  4. respones.sendRedirect(request.getContentPath()+"/dologin.jsp");

请求转发

  1. // url中的“/”是web根目录(就是web文件夹)
  2. request.getRequestDispatcher("url").forward(request,resopnes)

请求转发前后的request是同一个对象

表单

在form标签里面存在着表单元素,form设置action,表示,当点击提交按钮,就会跳转到的jsp页面(重定向)

  1. <form method="post" action="login.jsp">
  2. <input name="username" type="text"/>
  3. <input name="password" type="password"/>
  4. <input type="submit" value="login"/>
  5. </form>

上面的代码块,点击按钮的时候,就会跳转到login.jsp,同时带上了参数 username和password

实际上,相当于发送了一条这样的请求 login.jsp?username=xx&password=xx

之后,就可以通过request.getParameter("username")这样的方式来获得传过来的数值

如果某个标签有disable,即使该标签有name属性,但请求的参数是无法获得name的对应的值

客户端(js,html)中 “/”表示localhost:8080

jsp/servlet 在请求转发就是web根目录(应用程序上下文)

EL表达式

EL表达式就是一种简单的写法,主要用来从request、response、session、pageContext等内置对象取出数据。

例如,使用jsp表达式取出请求参数:

  1. <h1><%=request.getParameter("name")%></h1>

可以这样写:

  1. <h1>${param.name}</h1>

如果是setAttribute存入的数据:

  1. <h1><%=request.getAttribute("name")%></h1>

EL表达式得这样写:

  1. <h1>${requestScope.name}</h1>

如果存入了一个对象,想要获得对象的某个属性值

  1. <h1><%=request.getAttribute("employee").getName()%></h1>

EL表达式:

  1. <h1>${requestScope.employee.name}</h1>

请求参数对象:

对象 说明
param 与request.getParameter()方法一样
paramValues 与request.getParameterMap()方法一样

作用域对象:

JSP隐式对象 存储数据示例 EL隐式对象 EL示例
页面作用域 pageContext pageContext .setAttribute(“name”, 对象); pageScope
请求作用域 request request .setAttribute(“name”, 对象); requestScope
会话作用域 session session .setAttribute(“name”, 对象); sessionScope
应用程序作用域 application application .setAttribute(“name”, 对象); applicationScope

EL表达式中,可以不写前面的那个作用域,EL表达式就会默认按作用域范围大小从大到小查找

  1. //pagecontext ->request ->session-> application
  2. <h1>${employee.name}</h1>

访问数组、集合或者Map

  1. <h1>${array[2]}</h1>
  2. <h1>${list[1]}</h1>
  3. //相当于map.get("red")
  4. <h1>${map["red"]}</h1>
  5. <h1>${map.red}</h1>

新增,删除,更新操作使用重定向

Jsp学习笔记(2)——页面导航、表单、EL表达式的更多相关文章

  1. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  2. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  3. ng2 学习笔记(二)表单及表单验证

    在上一篇文章中提到了表单,只说了表单的数据绑定,这一篇文章主要讲一下表单验证,为什么把表单单独拿出来学习,主要是因为,表单是商业应用的支柱,我们用它来执行登录.求助.下单.预订机票.安排会议,以及不计 ...

  4. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  5. HTML&CSS基础学习笔记1.26-input重置表单

    重置表单 <input>的[type]属性值为"button"的时候表示一个普通的按钮,相当于一个<button>标签. <input>的[ty ...

  6. Django学习笔记(3)——表单,测试和模板语法的学习

    一,表单form 为了接收用户的投票选择,我们需要在前段页面显示一个投票界面,让我们重写之前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...

  7. 【Spring学习笔记-MVC-11--】Spring MVC之表单标签

    一.使用方法 1.要使用Spring MVC提供的表单标签,首先需要在视图页面添加: <%@ taglib prefix="form" uri="http://ww ...

  8. jquery-mobile 学习笔记之二(表单创建)

    绪上 一.注意事项 1. <form> 元素必须设置 method 和 action 属性 2. 每一个表单元素必须设置唯一的 "id" 属性. 该 id 在网站的页面 ...

  9. html+css学习笔记 5[表格、表单]

    表格 -- 默认样式重置 表格标签:     table 表格     thead 表格头     tbody 表格主体     tfoot 表格尾     tr 表格行     th 元素定义表头 ...

  10. HTML之学习笔记(十)表单元素

    html表单元素的基本格式为(必须包含在form标签中)

随机推荐

  1. 关于python的中国历年城市天气信息爬取

    一.主题式网络爬虫设计方案(15分)1.主题式网络爬虫名称 关于python的中国城市天气网爬取 2.主题式网络爬虫爬取的内容与数据特征分析 爬取中国天气网各个城市每年各个月份的天气数据, 包括最高城 ...

  2. PyCharm 2019 2.3 软件安装教程(1.补丁破解2.破解码)

    一:补丁破解 PyCharm 2019 2.3 下载地址 https://pan.baidu.com/s/1HaWFcbO-x4vZuT6mVC0AGA 提取码:elu7 更多破解教程微信公众号关注“ ...

  3. [译]Vulkan教程(07)物理设备和队列家族

    [译]Vulkan教程(07)物理设备和队列家族 Selecting a physical device 选择一个物理设备 After initializing the Vulkan library ...

  4. 关于Excel做表小知识记录

    关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人...  能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...

  5. maven修改运行环境配置

    maven中自带的tomcat是6版本,比如我们想用tomcat7,jdk1.8,我们就要通过配置来改变. 改变方式如下 <build> <plugins> <plugi ...

  6. ZooKeeper(四):从TCP数据流到zk内部处理包的转换

    通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构. 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的. 一.监听用户请求socket 基于NIO的端口监听, ...

  7. SpringCloud的入门学习之Eureka(高可用注册中心HA)构建Provider服务、Consumer服务

    1.在高可用的Eureka注册中心中构建provider服务. 使用springboot的多环境配置,来搭建Eureka的高可用集群式部署.由于使用的是maven构建的springboot项目,所以首 ...

  8. Git - Git本地仓库与GitHub远程仓库关联

    前言 Git本地仓库与GitHub仓库的关联逻辑如下 创建Key 在本地仓库下,新建Key文件夹,然后打开Key文件夹,单击鼠标右键,选择Git Bash Here. 输入命令:ssh-keygen ...

  9. C# params 用法

    params 主要用在方法或函数参数数组中, 1,当参数个数不确定时使用 2,不能盒ref,和out组合使用 3,与参数数组对应的实参可以时一个 同类型数组,也可以时任意多个同类型变量 4,实参是数组 ...

  10. 记录一次netcore3.0 code first使用迁移命令报错问题

    环境描述:macOS .vscode .netcore3.0 迁移工具:Microsoft.EntityFrameworkCore.Tools 遇到的问题: Could not execute bec ...