zoukankan      html  css  js  c++  java
  • EL表达式 与 servlvet3.0的新规范

    EL表达式  

    EL表达式 是一种简化的数据访问方式,是对jsp脚本的简化  。

    如我们在一个页面中需要输出session的保存的一个值:

    <%  out.println(session.getAttribute("name"))  %>          我们可以使用jsp中内置的out对象 和session对象   输出

    <%=session.getgetAttribute("name")  %>                      作为上面的替代品  我们可以使用输出表达式输出  

    但是上面二者的都是jsp脚本   为了不用jsp脚本    EL表达式应用而生  

    EL表达式不仅支持算术运算符 还支持逻辑运算符    并且其中内置的几个对象,和jsp页面中内置的对象相互对应 ,方便输出  

    支持算术表达符   ${ 1+2 }              显示    3

    支持逻辑运算符   ${ 2 > 1 }            显示 true

    内置对象  

    pageContext   对应于   jsp的内置对象pageContext  

    pageScope     对应于   jsp的内置对象page

    requestScope  对应于   jsp的内置对象request

    sessionScope    对应于  jsp的内置对象session

    applicationScope   对应于  jsp的内置对象application   

    cookie                         jsp中并无对应内置对象  

    param  paramValues  header   initParam  这四大对象  感觉用到会很少 

     回到该文章开始   我们可以使用EL表达式代替jsp脚本   

      ${sessionScope.name }   或   ${ sessionScope["name"]}

      ${requestScope.apple.color}    或  ${apple.color}           如果输出的是requestScope中值   可以省略requestScope  ,应该是默认会取request对象中的值 

    EL表达式 最多还是用来进行值的输出  ,所以不要在里面写太多的逻辑判断,虽然它支持算术运算符和逻辑运算符等 ,这些还是交给jsp脚本比较好 。

    还可以通过自定义函数  来扩展EL表达式的功能。

     Servlet3.0的新规范 

    Servlet3.0是Servlet规范历史上的比较重要的更新  ,主要有:

    1.Servlet3.0的注解Annotation

    开发人员在配置servlet,filter,listener的时候,除了可以在web.xml中配置 ,有了一种新的选择 

    涉及的javax.servlet.annotation包下提供了如下annotation

    @WebServlet    ------------用于修饰servlet类 ,来配置servlet

    @WebFilter       ------------用于修饰Filter类  ,来配置Filter

    @WebListener    ----------用来修饰Listener类 ,来配置Listener

    @WebInitParam   ---------搭配@WebServlet与@WebFilter使用   来为servlet和Filter配置参数

    @MultipartConfig    ------用来修饰servlet类   ,指定该servlet会处理multipart/form-data类型的请求(主要用于文件上传)

    @ServletSecurity    @HttpConstraint    @HttpMethodConstraint    这三个主要与安全与授权相关  

    2.Servlet3.0的Web模块配置支持  

     想来看一下未引入模块配置,所有的servlet,Filter,Listener都配置在一个web.xml文件中(假设我们没有使用框架) ,项目规模不大还好 ,项目规模大了的话,web.xml文件必定很庞大。

     java目录一般是把相关联的servlet,Filter.Listener放在同一个包(目录)下,我们在不同的包下新建WEB-INF目录,其中新建web-fragement.xml文件,来把项目分成不同的模块。

     引入模块化配置,把相关联的servlet,Filter,Listener放在一个web—fragment.xml文件中配置 ,这样可以产生若干个web—fragment.xml  ,为每个模块的web-fragment.xml文件在其中配置名称,

     和该web-fragment.xml相对于其他web—fragment.xml的加载顺序。

     当然我们可以在web.xml指定每个web-fragment.xml的加载顺序 ,它的优先级大于web-fragment.xml中指定的加载顺序。

     这是我们发现web.xml不是这个项目自己必须写的文件,可以没有(但是其实还有有的,因为tomcat的config目录下为每个web应用指定了公用的web.xml文件)。

    3.Servlet3.0提供的异步处理

    4.Servlet3.0改进了Servlet   API

    主要修改的有两个类

    HttpServletRequest类     增加了对文件上传的支持  

               新加的两个方法:

                Part  getPart(String   name)             ----根据名称来获取文件的上传域

                Collection<Part>   getParts()           -----获取所有的文件上传域

      关于文件上传的详细细节:

    还修改了ServletContext类   提供动态注册servlet,Filter的功能,还允许动态设置web应用的初始化参数  

         addServlet()

         addFilter()

         addListener()

         setInitParameter(String name ,String value)

  • 相关阅读:
    PEP8 Python 编码规范整理
    github操作
    重零开始,写一个股票交易项目(1)
    矢量地图质量检查现状与需求(2篇)
    导航数据质量评价相关
    测绘数据国内外现状概述
    机器的反叛-机器的智能会超越人类吗?
    标签要素调用CSS样式优先级说明
    内存碎片概念及主要避免方式
    关于年终述职总结
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4115724.html
Copyright © 2011-2022 走看看