jsp,el,jstl

1.Jsp:Java Server Page,Java服务器端页面。Jsp必须要依赖服务器容器才能运行。Jsp本质可以理          解是Servlet。Jsp作为前端页面显示,Servlet作为控制器。

2.jsp的工作原理图:
     

     

3.Jsp的组成部分:
    3.1:静态页面:在jsp页面可以直接写html代码(包括css,js);
    3.2:小脚本:<% Java代码 %>
            eg:<!-- java的小脚本 -->
    <%
        System.out.println("这是一个Java小脚本");
        
    %>

    3.3:表达式:<%=输出内容 %>
            eg:<!-- 表达式 -->
                <%="当前日期:"+getDate(new Date()) %>

    3.4:指令:<%@   %>导包,导入页面,指定页面的属性,导标签库。
    3.5:声明(了解):用来声明一个方法。<%!   %>
            eg:<!-- 声明 -->
    <%!
        String getDate(Date d){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
             return sdf.format(d);
        }
    %>

    3.6:注释:
                <!--html注释-->查看源码时html注释页面上看到
                在小脚本可以用Java的//,/* */
                <%-- Jsp注释 --%>查看源码时jsp注释页面上看不到

    3.7:Jsp的九大内置对象(重点):服务器容器在第一次加载Jsp页面时就会创建这九大内置对                                    象,所以在Jsp中这九大内置对象可以直接用。
        3.7.1:out(javax.servlet.jsp.JspWriter ):输出信息到浏览器页面
                out.print()/write();

        3.7.2:request(javax.servlet.http.ServletRequest):请求对象
    getParameter(String name);//通过表单元素name属性名获得表单元素value属性值。
    getParameterValues(String name);//通过表单元素name属性名获得表单元素的一组value            属性值。
    setAttribute(String name, Object o);//按key-value方式将值存在一次请求范围内
    getAttribute(String name);//按Key名获取请求范围内存的Value值。
    removeAttribute(String name);//按Key名移除请求范围内存的一对Key-value对。
    setCharacterEncoding(String env);//设置post方式请求的字符编码。
    getCookies();//获取客户端所有的cookies信息。
    getMethod();//获取客户端请求的方式,get/post/put
    getSession();//获取当前Session对象
    getServletContext();//获取application对象
    getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) ;//实现页面跳转的同时,将当次请求对应请求对象和响应传递过去。

        3.7.3:response(javax.servlet.http.SrvletResponse):响应对象
                getWriter() ;//获取out打印流对象
                setCharacterEncoding(String charset);//设置响应的字符编码
                setContentType(String type);//设置响应的内容类型
                addCookie(Cookie cookie);//将信息以cookie的形式通过浏览器存储到客户端
                sendRedirect(String location);//实现页面跳转,重定向
                setHeader(String name, String value) ;//设置响应头部信息

        3.7.4:session(avax.servlet.http.HttpSession):会话对象
                getId();//获得当前会话的SeesionId
                setAttribute(String name, Object value);//按Key-Value对方式存数据
                getAttribute(String name);//通过Key名获得Value值
                removeAttribute(String name);//通过Key删除Key-Value对
                getServletContext();//获得application对象
                setMaxInactiveInterval(int interval) ;//设置session最大非活动时间
                在web.xml中,设置session有效期
  <!-- 设置Session有效期 ,单位:分钟-->
    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>  
    
        3.7.5:application(javax.servlet.ServletContext):应用程序对象(web应用对象)
                application.setAttribute(String name, Object ob);//按Key-value存值
                application.getAttribute(String name);//按Key取值
                application.removeAttribute(String name);//按Key删除Key-value对
               application.getRealPath(String path);//根据项目相对文件夹路径名获得真实路径

        3.7.6:config(javax.servlet.ServletConfig):配置对象    
                  config.getInitParameter(arg0);//通过名称获得初始化参数值
                 config.getServletContext();//获得application对象

        3.7.7:exception(javax.lang.Throwable ):异常对象

        3.7.8:page(javax.lang.Object):当前页面。

        3.7.9:pageContext(javax.servlet.jsp.PageContext):页面上下文对象,通过它可以获取 JSP页面的另外八大内置对象 
        


4.静态导入和动态导入:相同点:都可以导入页面,都可以实现页面的复用。
  静态导入:<%@ include file="url" %>可以在当前页面导入另外一个页面,在编译时会将导入的                页面和当前的页面合成一个页面编译。
            适用场景:要考虑导入的页面的加载时效性时,咱们就用静态导入。
  动态导入:<jsp:include page="url" />可以在当前页面导入另外一个页面,在编译时先加载当前            碳再加载导入的页面。
            适用场景:不考虑导入页面的加载时效性时,就用动态导入。

5.EL:表达式语言。可以直接从四大范围(page->request->session->application)取值。
    作用:使页面的代码更简洁。可以自动进行类型转化。EL表达式中的值,不用判断,有值就显示,没值就不显示。
    5.1:el的使用:
        <%
        //Page范围内的值
        pageContext.setAttribute("k1", "张三");
        
        //request范围内的值
        request.setAttribute("k1", "李四");
        
        //session范围内的值
        session.setAttribute("k1", "王五");
        
        //application范围内的值
        application.setAttribute("k1", "赵六");
        
        //对象的属性
        Student stu=new Student("孙星", "11", "woman", Arrays.toString(new String[]{"sleep","eat"}), "hubei");
        request.setAttribute("stu1", stu);
        
        //集合中的值
        ArrayList<Student> stulist1=new ArrayList<Student>();
        stulist1.add(new Student("孙星2", "112", "woman", Arrays.toString(new String[]{"sleep","eat"}), "hubei"));
        stulist1.add(new Student("孙星3", "113", "woman", Arrays.toString(new String[]{"sleep","eat"}), "hubei"));
        request.setAttribute("stulist1", stulist1);
        
        //map集合中的值
        Map<String,String> hmap=new HashMap<String,String>();
        hmap.put("a1", "小东");
        hmap.put("a2", "小西");
        request.setAttribute("hmap1", hmap);
        
        //null值
        request.setAttribute("b1", null);
        
    %>
    <h1>${k1 }</h1>
    <h1>姓名:${stu1.uname },密码:${stu1.pwd }</h1>
    
    <h2>list集合中的对象的姓名:${stulist1[1].uname }</h2>
    <h1>map中的值:${hmap1["a1"] }</h1>
    <!-- el可以用逻辑运算符 -->
    <h1>判断一个值是否空值:${!empty b1 }</h1>
    <!-- el可以用算术运算符 -->
    <h1>el可以进行运算:${1+1 }</h1>
    <!-- el可以用关系运算符:== eq, > gt,>= ge,< lt,<= le,!=  -->
    <h1>el进行三元运算:${b1 eq null?1:2 }</h1>
    
6.jstl:JSP标准标签库。一般用它作页面逻辑处理。
    6.1:使用jstl的步骤:
        6.1.1:导包:jstl.jar
        6.1.2:导标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>
        
    6.2:标签:
        6.2.1:通用标签(了解):set,out,remove
            eg:<!-- jstl通用标签 -->
    <c:set var="uname" value="小波" ></c:set>
    ${uname }<br/>
    <c:out value="${uname }"></c:out><br/>
    <c:remove var="uname"/>
    ${uname }<br/>

        6.2.2:选择标签:if, choose
            eg:<!-- jstl选择标签 -->
    <c:if test="${1<2 }">
        <h1>1小于2</h1>
    </c:if>
    
    <c:set var="score" value="80"></c:set>
    <h1>
    <c:choose>
        <c:when test="${score>90 }">A</c:when>
        <c:when test="${score>80 }">B</c:when>
        <c:otherwise>c</c:otherwise>
    </c:choose>
   </h1>


        6.2.3: 循环标签:forEach
            eg:<!-- 循环结构 -->
    <!-- for循环的使用 -->
    <c:forEach var="i" begin="1" end="10" step="1">
        <h2>${i }</h2>
    </c:forEach>
    
    <!-- forEach循环使用 -->
    <%
    //集合中的值
            ArrayList<Student> stulist1=new ArrayList<Student>();
            stulist1.add(new Student("孙星2", "112", "woman", Arrays.toString(new String[]{"sleep","eat"}), "hubei"));
            stulist1.add(new Student("孙星3", "113", "woman", Arrays.toString(new String[]{"sleep","eat"}), "hubei"));
            request.setAttribute("stulist1", stulist1);
    %>
    
    <c:forEach var="s" items="${stulist1 }" varStatus="status">
        <h2>遍历的每个元素的姓名属性:${s.uname },元素索引:${status.index }</h2>
    </c:forEach>

7.扩展标签库:
    7.1:格式化标签库:<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
        eg:<!-- 格式化时间 -->
          <h1><fmt:formatDate value="<%=new Date() %>" pattern="yyyy-MM-dd"/></h1>
    <!-- 格式化数字 -->
    <h1><fmt:formatNumber value="1.233434445" pattern="0.00"></fmt:formatNumber</h1>
    <h1><fmt:formatNumber value="0.454545" pattern="0.00%"></fmt:formatNumber></h1>

    7.2: 函数标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
        <!-- 函数标签库 -->
    <h1>函数标签库contains: ${fn:contains("abcderefef","uu") }</h1>
    <h1>${fn:substring("abcdefg",2,5) }</h1>

    
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值