zoukankan      html  css  js  c++  java
  • jsp

    jsp技术(本质是一个servlet)

    jsp脚本和注释

    jsp脚本:1、<%java代码%>:翻译到service方法内部

                   2、<%=java变量和表达式%>:翻译到service方法内部out.print()

                  3、<%!java代码%>:翻译成service的成员内容

    <%
        int i=0;
         System.out.println(i);
         %>
         <%=i %>
         <%!
           String str ="nihao China";
         %>
         <%=str %>

    jsp注释:1、html注释:<!--注释内容--> ,可见范围 jsp源码、翻译后的servlet、页面 显示html源码

                   2、java注释://单行注释  /*多行注释*/ ,可见范围 jsp源码 翻译后的servlet

                   3、jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见

    注释一般是给开发人员自己看的,所以选用可见范围最少的注释方法,用jsp注释

    jsp运行原理:jsp本质就是一个servlet

    运行过程:jsp在第一次被访问时会被Web容器翻译成servlet,第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行

    被翻译后的servlet在Tomcat的work目录中可以找到

     jsp指令:page指令(一般系统自己写好),errorPage和isErrorPage指令,错误调转

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" errorPage="/error.jsp"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isErrorPage="true"%>

    include指令:静态包含(直接把网页内容复制到本页)

    <%@ include file="/header.jsp" %>

    taglib指令:标签库指令

    jsp9大内置对象

    out   request   response   config   page   pagecontext   application   session   exception

    out:输出流类型,有out缓冲区(默认8kb),里面的东西再存到response缓冲区

    aaaaaaaaaaaa
        <div>nihao</div>
        out.write("bbbbbbb");
        <%out.write("bbbbbbb");
        response.getWriter().write("cccccc");
        %>
        <%="dddddddd" %>

    输出顺序为 c a b d

    pageContext:jsp页面的上下文对象,一个域对象,可以向指定的其他域中存取数据

    <%
         request.setAttribute("name", "zhangsan");
         pageContext.setAttribute("name", "lisi",pageContext.REQUEST_SCOPE);
         pageContext.setAttribute("name", "wangwu",pageContext.SESSION_SCOPE);
         pageContext.setAttribute("name", "wangrongchen",pageContext.APPLICATION_SCOPE);
        %>
        <%=request.getAttribute("name") %>
        <%=pageContext.getAttribute("name",pageContext.SESSION_SCOPE) %>
        <!-- findAttribute()如果域中有同名的key,会从小到大搜索域中的值 -->
        <%=pageContext.findAttribute("name") %>

    四大域的作用范围:

    pageContext:当前jsp页面

    request域:一次请求

    session域:一次会话

    application域:整个web应用

    jsp标签:

    动态包含(本质是跳转)

    <jsp:include page="/header.jsp"></jsp:include>

    请求转发

    <jsp:forward page="/demo05.jsp"></jsp:forward>

    EL技术:写jsp页面内部,减少jsp脚本的编写

    作用:从四大域中取出数据

    <%
             pageContext.setAttribute("name", "张锐");
             request.setAttribute("name", "王荣成");
             session.setAttribute("name", "董斌");
             application.setAttribute("name", "韩凯");
            
         %>
         ${pageScope.name }
         ${requestScope.name }
         ${sessionScope.name }
         ${applicationScope.name }
         ${name }
    <%
         request.setAttribute("name", "王荣臣");
         Student stu = new Student();
         stu.setId(1);
         stu.setName("王荣臣");
         stu.setFace(true);
         session.setAttribute("Student1", stu);
         Student stu2 = new Student();
         stu2.setId(2);
         stu2.setName("韩凯");
         stu2.setFace(true);
         Student stu3 = new Student();
         stu3.setId(3);
         stu3.setName("董斌");
         stu3.setFace(false);
         ArrayList<Student> studentlist = new ArrayList<Student>();
         studentlist.add(stu2);
         studentlist.add(stu3);
         application.setAttribute("StudentList", studentlist);
          %>
          ${name }
          ${Student1.name }
          ${StudentList[1].name }

    EL11大内置对象(了解)

    <%request.setCharacterEncoding("utf-8"); %>
         ${param.username }......${param.pwd }
         ${header['User-Agent'] }
    <%
            Cookie cookie = new Cookie("name","aaa");
            response.addCookie(cookie);
         %>
         ${cookie.name.value }
    <%
         Student s1 = new Student();
         s1.setName("小猪佩奇");
         session.setAttribute("s1", s1);
    %>
         ${1+2 }
         <!-- empty判断的是域中是否有该对象,如果有,返回false,如果没有,返回true -->
         ${!empty s1 }
         ${s1==null?true:false }

    JSTL技术:jsp标准标签库,业务逻辑功能(if和for),一般使用核心库就可以

    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!-- test后面必须接true或false -->
        <c:if test="${1==1 }">
        xxxxxxxx
        </c:if>  
        <!-- 普通for循环 -->
        <c:forEach begin ="0" end="5" var="i">
            ${i }
        </c:forEach>
        <!-- 增强for -->
        <c:forEach items="${StudentList }" var="stu">
               ${stu.name }......${stu.face }
        </c:forEach>
        <%
        Student stu2 = new Student();
        stu2.setId(2);
        stu2.setName("韩凯");
        stu2.setFace(true);
        HashMap<String,Student> map= new HashMap<String,Student>();
           map.put("name", stu2);
           map.put("age", stu2);
           session.setAttribute("xiaonaigou", map);
           Map<Student,Map<String,Student>> m = new HashMap<Student,Map<String,Student>>();
           m.put(stu2,map);
           session.setAttribute("m", m);
        %>
        <!-- 增强for遍历map集合 -->
        <c:forEach items="${xiaonaigou }" var="entry">
             ${entry.key }
             ${entry.value }
        </c:forEach>
        <!-- 增强for遍历map中套用的map的集合 -->
        <c:forEach items="${m }" var="entry">
        ${entry.key}
             <c:forEach items="${entry.value }" var="entry1">
             ${entry1.key }
             ${entry1.value }
             </c:forEach>
        </c:forEach>

    开发模式:开发过程中总结出的“套路”,约定俗成的设计模式

    web开发的设计模式:mvc

    model:模型   javabean实体类   封装数据

    view:视图   jsp   页面显示

    controller:控制器   servlet   获取数据---对数据进行封装---传递数据--- 指派显示的jsp页面

    javaEE的三层架构:服务器开发

    web层:与客户端交互

    service层:业务处理

    dao层:与数据库进行交互

  • 相关阅读:
    C++11 lambda表达式(lambda expression)
    win 10 relog.exe 下载地址
    检测闩锁/自旋锁争用
    关于sql 锁和并发的一些记录
    FAST number_rows 意义解释
    网站实施SEO的步骤
    搜索引擎高级搜索指令浅析
    关于遇到高并发时候的一些总结
    Autofac 设置方法拦截器的两种方式
    C# MVC 进入Action 方法之后怎么使用MVC参数验证模型
  • 原文地址:https://www.cnblogs.com/yelena-niu/p/9290926.html
Copyright © 2011-2022 走看看