java暑期学习笔记(13)

# 2018/07/25 #
* **1.jsp**
    * jsp实际上就是servlet。jsp=html+java,为用户提供动态内容
    * 不适合编写Java逻辑
* **2.JSP原理**
    * 翻译(生成Java文件)-> 编译(生成class问文件) -> 执行
* **3.jsp的最佳实践**
    * servlet:控制器。重点编写Java代码逻辑(获取表单数据,处理业务逻辑,分发转向)
    * JSP:代码显示模板,重点在于显示数据
* **4.jsp的基本语法**
    * 1、JSP模版元素:网页的静态内容。如:html标签和文本。
    * 2、JSP的脚本
        * 小脚本 <% java代码 %>
        * 表达式 <%= 2+3 %> 等价于out.print(2+3);不能加分号
    * 3、声明 
        * <%! %> 表示在类中定义全局成员,和静态块。
    * 3、JSP注释
        * JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
        * 网页注释:<!-- 网页注释 -->    特点:不安全,费流量
    * 3指令 6动作 9内置对象
* **5.JSP的三个指令**
    * page指令 Include指令 taglib指令
    * 语法:<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”...%>
    * page:用于定义JSP页面的各种属性
        * <%@ page import="java.util.Date,java.util.List"%>不同包用逗号隔开
        * JSP会自动导入以下的包:
            import java.lang.*;
            import javax.servlet.*;
            import javax.servlet.http.*;
            import javax.servlet.jsp.*;
        * 自动创建session对象
        * JSP中有javax.servlet.jsp.JspWriter输出字符流
        * errorPage: 如果页面中有错误,则跳转到指定的资源。
            * errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
            * 如果不写“/”则代表相对路径。
        * isErrorPage: 是否创建throwable对象。默认是false; 得到一个excepion对象,通过getMessage可以获取信息
        * contextType: 等同于response.setContextType("text/html;charset=utf-8");
        * pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
        * isELIgnored: 是否不支持EL表达式。 默认是false;${1+1},相当于输出2
    * Include
        * 静态包含:把其它资源包含到当前页面中。
            <%@ include file="/include/header.jsp" %>
        * 动态包含:
            <jsp:include page="/include/header.jsp"></jsp:include>
        * 两者的区别:翻译的时间段不同
            前者:在翻译时就把两个文件合并
            后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
        * 原则:能用静的就不用动的。
    * taglib
        * 作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
            <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="别名" %> 
* **6.jsp的6个动作**        
    * <jsp:useBean> 创建一个对象
        * <jsp:useBean id="stu1" class="class.itheima.entity.Student"></jsp:useBean>
    * <jsp:setProperty> 给指定的对象属性赋值
        * <jsp:setProperty property="name" name="stu1" value="jerry"/>
    * <jsp:getProperty> 取出指定对象的属性值
        * <jsp:getProperty property="name" name="stu1"/>
    * <jsp:include > 动态包含
    * <jsp:forward> 请求转发 
        * 相当于request.getRequestDis
    * <jsp:param> 设置请求参数
        * <jsp:param value="123" name="name"/>
        * 相当于http://localhost:8080/项目name/1.jsp?name=123
* **7.jsp的9个内置对象**
    * 指在JSP的<%=%> 和<% %>中可以直接使用的对象
    * request(javax.servlet.http.HttpServletRequest)存放的数据一次请求转发有效,使用最多,省内存
    * response(javax.servlet.http.HttpServletResponse)
    * session(javax.servlet.http.HttpSession)由session="true"开关,存放的数据在一次会话中有效。如:存放用户登录信息,购物车功能。
    * application(javax.servlet.ServletContext)存放的数据在整个应用内有效,因为范围太大,少用。
    * exception(java.lang.Throwable)由isErrorPage="false"开关    
    * page(java.lang.Object当前对象this)当前servlet实例
    * config(javax.servlet.ServletConfig)当前JSP的配置信息
    * out(javax.servlet.jsp.JspWriter)字符输出流,相当于 printWriter对象
    * pageContext(javax.servlet.jsp.PageContext)可以得到以上所有的对象,当前界面有效。
        * 本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
            * void setAttribute(String name,Object o);
            * Object getAttribute(String name);
            * void removeAttribute(String name);
            * 操作其它域对象的方法
                * void setAttribute(String name,Object o,int Scope);
                * Object getAttribute(String name,int Scope);
                * void removeAttribute(String name,int Scope);
                * scpoe的值:PageContext.PAGE_SCOPE;PageContext.REQUEST_SCOPE ;PageContext.SESSION_SCOPE;PageContext.APPLICATION_SCOPE(作用域最大)
            * findAttribute(String name);自动从page,request,session,application依次查找,直到找到为止
        * 创建其它的8个隐式对象,在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。
        * 提供了的简易方法
            * pageContext.forward("2.jsp");转发
            * pageContext.include("2.jsp"); 
* **8.El表达式**
    * 简化jsp中java代码。它不是一种开发语言,是jsp中获取数据的一种规范
    * 具体功能
        * 获取数据
            * EL表达式只能获取存在4个作用域中的数据
                * ${u} 原理: pageContext.findAttribute("u");
            * EL获取对于null这样的数据,在页面中表现为空字符串
            * ${u.name} == u.getName()方法。点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。${u.city.address}属性导航。
            * []运算符:点能做的,它也能做; 它能做的,点不一定能做
        * 运算
            * empty:判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true
            * 三元运算符 
                * ${empty list ? "你还没买商品":"商品如下"};
        * 隐式对象(11个)
            * pageContext---javax.servlet.jsp.PageContext---与JSP的pageContext一样的
                * ${pageContext.request.contextPath}
            * pageScope---java.util.Map<String,Object>---pageContext范围中存放的数据,页面范围
            * requestScope---java.util.Map<String,Object>---请求范围数据
            * sessionScope---java.util.Map<String,Object>---会话范围数据
            * applicationScope---java.util.Map<String,Object>---应用范围数据
                * ${applicationScope.p}指定访问
            * param---java.util.Map<String,String>---一个请求参数
                * ${param.user}==request.getParameter("user");表单数据
            * paramValues---java.util.Map<String,String[]>---重名请求参数
                * ${paramValues.hobby[0]}
            * header---java.util.Map<String,String>---一个请求消息头(浏览器的)
            * headerValues---java.util.Map<String,String[]>---重名请求消息头
            * initParam---java.util.Map<String,String>---web.xml中全局参数
            * cookie----java.util.Map<String,Cookie>---key:cookie对象的name值
                * ${cookie.JSESSIONID.value}
* **9.JSTL**
    * 使用JSTL实现JSP页面中逻辑处理。
    * 使用的时候在JSP页面添加taglib指令
    * 常用标签介绍
        * 核心标签库:
            * 通用标签: set声明变量/out输出数据/remove移除
            * 条件标签:if/choose
                * <c:if test="${5>3}">aaaaa</c:if>
                * <c:set var="num" value="${3}"></c:set>
                  <c:choose>
                        <c:when test="${num==1}" >第1名</c:when>
                         <c:when test="${num==3}" >第3名</c:when>
                     </c:choose>
            * 迭带标签:foreach
                * 普通循环
                    <c:forEach var="i" begin="1" end="10" step="1">
                    ${i}</c:forEach>相当于for(var i=1;i<=10;i++)
                * 迭带器
                    <c:forEach items="${集合或数组}"var="你设置的名字" varStatus="vs" >
                    </c:forEach>
                * varStatus属性:指向一个字符串,该字符串引用一个对象。
                    * 底层:map.put("vs",一个对象);
                    * 这个对象记录着当前遍历的元素的一些信息:
                        * getIndex():返回索引。从0开始
                        * getCount():返回计数。从1开始
                        * isLast():是否是最后一个元素
                        * isFirst():是否是第一个元素
* **10.javaWeb开发模式**
    * c/s:客户端、服务器(胖客户端)
    * b/s:浏览器、服务器(瘦客户端)
    * javabean:无参构造,私有属性,get和set方法
    * model模式
        * JSP+JavaBean(只适合教学)
        * JSP+Servlet+JavaBean    
            * MVC开发模式:
                * model模型 Javabean四种作用域;
                * View视图  JSP;
                * Controller控制器 servlet

猜你喜欢

转载自www.cnblogs.com/yaopeiyun/p/9557160.html
今日推荐