jsp\EL表达式

JSP指令
作用:用于配置JSP页面,导入资源文件
格式:<%@指令名称 属性名1=“属性值1” 属性名2=“属性值2” …%>
指令名称: page 配置Jsp页面的 include 导入资源文件的 taglib 导入标签库的

page指令的常用属性
contentType=“text/html;charset=utf-8” 指定服务器响应数据的格式以及浏览器解析响应数据的格式
pageEncoding=“UTF-8” 指定JSP页面的编码集 高级的IDE pageEncoding属性值和contentType的字符集默认是一致的,无需重复设置,但低级的IDE必须设置
import导包 IDEA会自动导包,无需手写
errorPage错误页面 错误发生后跳转到的页面 在非错误页面中配置错误页面的地址
isErrorPage错误页面 该页面是错误页面TRUE 在错误页面(inserrorpage=true)中可以调用exception对象,其他页面是不可以的 false不是错误页面 TRUE是错误页面

<%@include file=""%>可以导入其他JSP页面,比如统一的logo等

jsp中的注释 html注释 只能注释html的内容 JSP注释<%-- --%> 可以注释JSP中的一切内容 JSP注释的内容在页面源码中是没有的 而html注释的内容虽然浏览器看不见了,但是页面源码中是有的

JSP中有9大内置对象
对象名 对象真实类型 作用
pageContext PageContext 域对象,只在当前JSP页面有效 可以获取其他8个内置对象
request HttpServletRequest 域对象,在一次请求的多个资源之间共享数据(请求转发)
session HttpSession 域对象,在一次会话的多个请求之间共享数据
application ServletContext 域对象,项目下所有的会话之间共享数据
response HttpServletResponse 响应对象
page Object 当前页面对象,this
out JspWriter 输出对象,将数据输出到页面上
exception Throwable 错误对象,获取错误信息
confige servletConfig servlet的配置对象

jsp发展的历史
1.刚开始没有JSP,只能在servlet中写前端代码,非常的麻烦
2.后来有了JSP,大大提高了servlet开发效率,但是JSP被过度使用,里面又有html又有js,又有java代码,项目非常难以维护,不利于分工协作.只有项目编写人员能看懂自己的代码
3.java借鉴了MVC模式,对代码进行了规范,实现了前后端分离,使程序的设计更加合理性

MVC Model View Controller
Model模型 用来完成具体的业务操作,如查询数据库,封装对象 javaBean
View视图 用来展示前端界面 JSP
Controller控制器 用来接收用户请求,调用Model获取数据,将数据发送给view进行展示 servlet

优点:降低了耦合度,便于维护及分工协作 提高了代码的复用性
缺点:使项目架构变的复杂,对开发人员的要求较高

采用MVC设计模式后,JSP中只写少量的java代码用于展示,但是用jsp脚本还是麻烦,又有新的技术EL和jstl表达式

EL Expresson Language 表达式语言
作用:用来替换和简化jsp页面中的java代码的编写
格式: ${表达式}
jsp默认支持EL表达式 page中有一个属性 isIgnoreEL,如果值是TRUE则忽略所有的EL表达式 忽略单个EL表达式可以在表达式前加\

运算功能
1.算数运算(/也可写成div %也可以写成mod)
2.比较运算
3.逻辑运算(且使用&& 或者and都可以)
4.empty (判断集合或数组或字符串为null或size=0都返回TRUE,否则返回false) 反之是not empty

从域中获取值
四个域 1.pageScope pageContext 2.requestScope request 3.sessionScope session 4.applicationScope application(ServletContext)
${域名称.属性名} 如果只写属性名的话,默认从最小的域开始查找,直到找到为止
另外如果属性为空,不会在页面显示null,会显示空字符串,是对jsp脚本三元表达式的优化,很简单

${域名称.键名称.属性值} 如果传入的属性是个对象,而对象又有属性,那么我们可以继续调用属性的属性
注意:成员变量不一定是属性,必须有getter方法才是属性,即使没有这个成员变量,有getter方法,那么去掉get后得到的内容首字母变小写也是属性,也可以被EL表达式调用
${}中直接写域中的属性名,如果没有该属性返回null打印空字符串,空属性再.属性一样是空的 但是对象属性,如果.属性没有该属性的话会报错,属性值为null还是空字符串
针对集合\数组,如果发生了空指针则打印空字符串,不会报错

${} 里面放list集合,获取每个元素的值可以用属性名[索引值] ${list[0]}
里 面 放 m a p 集 合 可 以 {} 里面放map集合 可以 map{map.属性名} 也可以${map[“属性名”]}

EL表达式里有11个隐式对象
pageContext 和jsp中pageContext对象完全一样,可以获取jsp中的其他8个内置对象
pageScope 当前页面域对象
requestScope 一次请求域对象
sessionScope 一次会话域对象
applictionScope 一个web项目域对象
cookie 根据name获取请求中的cookie值
param 根据参数名获取参数值
paramvalues 根据参数名获取参数值数组
header 根据请求头名称获取值
headerValues 根据请求头名称获取值数组
initParam 获取全局初始化参数

JSTL java server pages tag library jsp标准标签库 是由Apache组织提供的免费开源标签库
作用:简化和替换jsp页面上java代码的编写
使用步骤:
1.导入jstl的相关jar包
2.引入标签库 <%@ taglib prefix=“c” uri=“xxx” %>
3.使用标签

JSTL中常用的标签有
c:if 相当于java中的if语句
c;if标签有一个必须的属性 test=“xxx” 如果test的值为TRUE则标签内的内容执行,如果为false则标签内的内容不执行(test中一般放的是EL表达式)
c:if标签中没有else标签,想达到else的功能,再写一个c:if标签

c:choose 相当于java中的switch语句 c:choose 相当于java中的switch c:when 相当于java中的case c:otherwise 相当于java中的default

c:foreach 相当于java中的for语句
有两种使用情况
1.普通循环的情况
start 开始的数字 end结束的数字 step步长 var循环的变量 varStatus循环状态变量(有两个属性 index元素的索引,普通循环索引和循环的变量一致,容器循环从0开始 count元素是循环的第几个,从1开始)
2.增强for循环
items 循环的容器 var循环的变量 varstatus循环状态变量

queryforObject可以封装成单个的对象
1.如果第二个参数直接写XXX.class用于聚合函数的查询,它里面也只能放基本类型或简单对象,不能放数组等元素,查出的结果是一行一列的
2,如果第二个参数写成new BeanPropertiesRowMapper(XX.class)可以查询的是一行的数据,是一个复杂的对象

重定向和请求转发会在当前servlet的所有代码都执行完毕后跳转,写在它之后的代码也会继续执行,所以执行完毕之后记得写return

超链接href和事件后面都可以加方法

方法定义在script里面,触发才能生效 onload是页面一加载就干什么事情,不代表所有方法都需要写到onload里面去

在定义方法的时候,可以传递当前标签的值,但是传递的仅仅是当前的值,并不是该属性对象,所以仅可以作为一个判断,不能进行操作.

js中没有集合的概念,集合和数组是一个东西,切记哦. 数组的属性是length 没有括号 数组的某个元素是arr[i] 数组添加内容是push 删除数据是splice

性别的回显可以使用jstl标签在html中判断 也可在js中写逻辑 前者比较直观

注意EL表达式只代表这个内容显示出来是什么,如果是字符串等在js中仍需要加引号

id可以放在隐藏域中,这样相对安全,直接在地址栏中相对不安全

没有加value值的标签,那么它的value值就是on onXXX都是事件 form.submit()是方法

多选删除可以将所有内容放置在一个表单内,给删除全部按钮绑定单击事件,单击此按钮则提交表单,获取其中的所有选中的复选框的id,getParamaterValues(“uid”) 获取的是一个数组

分页查询将分页内容封装成一个pageBean对象 里面有5个成员变量
1.totalNums总数据条数 通过方法查询获得总条数
2.Rows每页数据条数 固定或可调整
3.PageNums总页数 =totalNus%Rows==0?totalNus/Rows:totalNus/Rows+1 能整除则为商 不能整除则为商+1
4.CurrentPageNum当前页数 需传递的
5.list list当前页面的内容 查询获得

那么会新创建一个PageBeanServlet 代替原有的ListServlet,前台等再做一些调整即可
<c:>标签的if语句 不一定非要包住所有内容,包住一个起始标签就可以起到相应的效果

分页查询后进行数据的回显,每次再点页码的时候,都传递上次查询的条件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值