JSP相关学习

动态页面技术(JSP/EL/JSTL)

<!-- jsp的三种脚本方式 -->
    <%
        int i = 5;

        //这是单行注释 
        /*这是多行注释*/
    %>
    <%=i%>
    <%!String str = "Hello JSP!";%>
    <%=str%>

    <!-- jsp的三种注释 -->

    <%-- 这是JSP注释 --%>

JSP脚本和注释

JSP本质

三大指令

  • page指令:重要的import指令
  • include指令:提取公共头和尾
  • taglib指令:引入第三方标签库的

JSP九大内置/隐式对象--笔试

页面输出内容的四种方式

    <!-- 方式一:直接输出 -->
    aaaaaaaaaaaaaa
    
    <!-- 方式二:jsp脚本 -->
    <%
        out.write("bbbbbbbbbbbb");
        response.getWriter().write("cccccccccc");
    %>
    <%="dddddddddddd" %>

out对象

  • out对象的类型:JspWriter
  • out对象的作用就是向页面输出内容
  • out缓冲区默认8kb,可以设置为0,代表关闭out缓冲区,内容直接写到response缓冲区

pageContext对象(域对象)

pageContext可以向其他的域对象中存取数据

    <%
        request.setAttribute("name", "wangwu");
        pageContext.setAttribute("name", "Jerry");

        // 使用pageContext对象向其他域中存取数据
        pageContext.setAttribute("name", "lisi", PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("name", "zhangsan", PageContext.SESSION_SCOPE);
        pageContext.setAttribute("name", "Tom", PageContext.APPLICATION_SCOPE);
    %>

    <!-- findAttribute方法会从小到大搜索范围中的name -->
    <!-- 域的作用范围大小比较,其中pageContext域习惯叫做page域,application域就是servletContext域 -->
    <!-- pageContext域 < request域 < session域 < application域 -->
    <%=pageContext.getAttribute("name", PageContext.REQUEST_SCOPE)%>
    <%=pageContext.findAttribute("name")%>

pageContext对象可获得其他八大对象

四大域的总结

  • page域(pageContext):当前jsp页面
  • request域:一次请求
  • session域:一次会话
  • application域:整个web应用

JSP动作(常用)

  • 页面包含(动作包含):
  • 请求转发:

EL(Express Language)表达式

EL的主要作用就是为了简化jsp脚本的,主要方向是简化从域中取出数据

  • 最重要的作用就是从域中取出数据。其语法格式为
    ${requestScope.compony}
  • 最重要的通过EL的内置对象pageContext获得request对象,再通过request对象获得web应用的名称。${pageContext.request.contextPath}

jsp的本质就是servlet

EL执行表达式

  • ${1+1}
  • ${empty obj}--判断一个对象是否为空,是返回true,否则返回false
  • ${obj==null?true:false}

JSTL(JSP Standard Tag Library)----JSP标准标签库

要使用jstl库,需要导入两个jar包:jstl.jarstandard.jar

    <%
        // 1.模拟List<String>
        List<String> strList = new ArrayList<String>();
        strList.add("Tom");
        strList.add("Jerry");
        strList.add("Mikey");

        request.setAttribute("strList", strList);

        // 2.模拟List<User>
        List<User> userList = new ArrayList<User>();
        userList.add(new User("1001", "张三", "156235"));
        userList.add(new User("1002", "张四", "fdt785"));
        userList.add(new User("1003", "Li Li", "gdhjkt"));

        pageContext.setAttribute("userList", userList);

        // 3.模拟Map<String,String>
        Map<String, String> strMap = new HashMap<>();
        strMap.put("one", "1");
        strMap.put("two", "2");
        strMap.put("three", "3");

        session.setAttribute("strMap", strMap);

        // 4.模拟Map<String,User>
        Map<String, User> userMap = new HashMap<>();
        userMap.put("user1",new User("1001", "张三", "156235"));
        userMap.put("user2",new User("1002", "张四", "的方式根深蒂固"));
        userMap.put("user3",new User("1003", "张五", "fsdffgd"));

        application.setAttribute("userMap", userMap);
    %>

    <h1>取出strList中的数据</h1>
    <c:forEach items="${strList }" var="str">
        ${str }<br>
    </c:forEach>

    <h1>取出userList中的数据</h1>
    <c:forEach items="${userList }" var="user">
        user的id:${user.id }---user的username:${user.username }---user的password:${user.password }<br>
    </c:forEach>

    <h1>取出strMap中的数据</h1>
    <c:forEach items="${strMap }" var="entry">
        ${entry.key }键对应的值=${entry.value }<br>
    </c:forEach>
    
    <h1>取出userMap中的数据</h1>
    <c:forEach items="${userMap }" var="entry">
        ${entry.key }对应的User对象为:${entry.value }<br>
    </c:forEach>

猜你喜欢

转载自www.cnblogs.com/zxfei/p/11020341.html