java学习(2020年3月23):jsp页面 & EL & JSTL & MVC开发模式

一、 JSP:

       Java Server Pages, java服务器端页面,它是一个特殊的页面,可以定义html标签,也可以定义java代码,在本质上就是一个Servlet

      1、指令:用于配置页面,导入资源文件
           ** 格式<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
           ** 指令名称—pag: 用于配置JSP页面
               1. 属性contentType:等同于response.setContentType(),设置响应体的mime类型以及字符集,在高级的开发工具中可以设置当前jsp页面的编码,当使用低级的工具的时候,通过设置pageEncoding属性设置当前页面的字符集
               2. 属性import:导包,java需要用到的资源包
               3. 属性errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
               4. 属性 isErrorPage:标识当前也是是否是错误页面,true可以使用内置对象exception,false是默认值,不可以使用内置对象exception
           ** 指令名称—include : 页面包含的。导入页面的资源文件,例如: <%@include file="top.jsp"%>
           ** 指令名称—taglib: 导入资源,例如:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。其中prefix:前缀,自定义的

      2、注释
           ** <!-- -->:只用于注释html代码片段
           ** <%-- --%>jsp注释可以注释所有

      3、JSP的脚本
           ** <%  代码 %>:定义的java代码,在service方法中
           ** <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置
           ** <%= 代码 %>:定义的java代码,会输出到页面上,类似于输出语句

      4、 JSP的内置对象:在jsp页面中不需要获取和创建就可以直接使用,一共有9个内置对象

 
对象名真实类型作用
pageContextPageContext当前页面共享数据,可以获取其他八个内置对象
requestHttpServletRequest一次请求访问的多个资源(转发)
sessionHttpSession一次会话的多个请求间
applicationServletContext所有用户间共享数据
responseHttpServletResponse响应对象
pageObject 当前页面(Servlet)的对象  this
outJspWriter输出对象,数据输出到页面上
configServletConfigServlet的配置对象
exceptionThrowable异常对

           ** response.getWriter()和out.write()的区别:在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。response.getWriter()数据输出永远在out.write()之前,out会在指定位置出现,但是response.getWriter()会出现在最前面。一般推荐使用response.getWriter()。

二、 MVC开发模式  

        早期只有servlet,只能使用response输出标签数据,后来有jsp简化了Servlet的开发,过度使用jsp页面,造成难于维护,难于分工协作,后来借鉴mvc开发模式,使得程序的设计更加合理性

     1、具体模式:
        **  MModel,代表一种模型。JavaBean完成具体的业务操作。如:查询数据库,封装对象
        **  V:View,视图,JSP 展示数据
        **  C:Controller,控制器,Servlet,主要获取用户的输入,调用模型,并将数据交给视图进行展示

     2、 优缺点:
        **  优点耦合性低,方便维护,可以利于分工协作,重用性高
        **  缺点:使得项目架构变得复杂,对开发人员要求高

三、 EL表达式

        Expression Language 表达式语言,用于替换和简化jsp页面中java代码的编写,el表达式中有11个隐式对象

     1、 语法格式: ${表达式}。jsp默认支持el表达式的。如果要忽略el表达式,可以设置jsp中page指令中的isELIgnored="true" 忽略当前jsp页面中所有的el表达式,也可以用  \${表达式}  忽略当前这个el表达式

     2、 运算符
        **  算数运算符: + ,-, *, /(div), %(mod)
        **  比较运算符: > ,< ,>=, <=, == ,!=
        **  逻辑运算符: &&(and) ,||(or) ,!(not)
        **  空运算符: empty,用于判断字符串、集合、数组对象是否为null或者长度是否为0
             1. ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
             2. ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

     3、 获取值:el表达式只能从域对象中获取值
        **  ${域名称.键名}:从指定域中获取指定键的值
             1. 域名称—pageScope             --> pageContext
             2. 域名称—requestScope         --> request
             3. 域名称—sessionScope         --> session
             4. 域名称—applicationScope    --> application(ServletContext)
       **  ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止
       **  获取对象、List集合、Map集合的值:
             1. 对象:${域名称.键名.属性名},在本质上会去调用对象的getter方法
             2. List集合:${域名称.键名[索引]}
             3. Map集合: ${域名称.键名.key名称}   或     ${域名称.键名["key名称"]}
       **  pageContext:可以获取jsp其他八个内置对象,${pageContext.request.contextPath} 可以实现动态获取虚拟目录

四、 JSTL标签

        JavaServer Pages Tag Library  JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签 ,用于简化和替换jsp页面上的java代码

     1、使用步骤:导入jstl相关jar包;引入标签库::<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

     2、常用JSTL标签
       **  if标签:if语句,但是没有else情况
           1. 属性—test :必须属性,接受boolean表达式,一般test属性值会结合el表达式一起使用,为true显示标签体内容,否则不显示
       **  choose标签:相当于java代码的switch语句
            1. when标签:在choose标签体内,用于做判断,相当于case
            2. otherwise标签:在choose标签体内,其他情况的声明,相当于default
       **  foreach标签:相当于java代码的for语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值