jsp入门

2018-10-14  本文已影响0人  Butif_D

${pageContext.request.contextPath} // 在JSP页面动态获得项目名


类型 翻译成Servlet对应的部分 注意

<%...%>:Java程序片段 翻译成Service()方法里面的内容

<%=...%>:输出表达式 翻译成Service()方法里面的内容,相当于调用out.print() 输出表达式不能以;结尾

<%!...%>:声明成员变量 翻译成Servlet里面的内容

eg:
<table border="1px" width="500px">

    <% 

    for(int i = 0;i < 8;i++){

        %>

        <tr>

            <%for(int j = 0; j < 5;j++){

                %>

                <td>1</td>

                <%

            } %>

        </tr>

        <%

    }

    %>



</table>    

三大指令:
声明格式:
指令作用:声明当前页面的一些属性和行为的

语法   <%@指令的类型  属性=属性值 属性=属性值   %>
  1. page指令:定义JSP文件中的全局属性.
    重要的属性:
    import:导包



    pageEncoding:当前page的编码 utf-8



    Content-Type:设置mini类型,缓冲区编码以及高速浏览器用什么方式打开 utf-8
  1. include指令:用于引入其他的页面,静态包含
    <%@ inlucde file="">

  2. taglib指令:用于引入标签库

    <%@ taglib  属性 =属性值 %>

九大内置对象:
request HttpServletRequest

response        HttpServletResponse 

session     HttpSession 

out     JspWriter   

exception       Throwable   

application ServletContext  相当于Servlet里面的ServletContext

config      ServetConfig    

page        Object(this)    指当前的页面

pageContext PageContext 当前页面的上下文

四大域对象
pageContext 当前页面

request     一次请求, 转发有效 Servlet和JSP直接数据的传递

session     会话(多次请求),

application 整个应用

    pageContext的作用:



        1.作为域对象存取值(当前页面)

​ setAttribute(String name,Object obj);

​ getAttribute(String name);

​ removeAttribue(String name);
2.获得其它8个内置对象

​ getRequest(), getSession()....
3.便捷获得域(四个)对象的值

pageContext.findAttribute(String name);依次从pageContext,request,session,application获取值,

动作标签

语法:

<jsp:标签名 属性="属性值"/>

<jsp:forword >:在jsp页面中完成请求转发
<jsp:incude >:动态包含

静态包含和动态包含区别

​ 静态包含使用的是include指令, 动态包含使用的是jsp动作标签

​ 静态包含相当于代码拷贝,只生产一个Servlet; 动态包含有几个jsp就生成几个Servlet,最终再整合在一起展示


EL表达式:代替脚本 <% %>
语法:${el表达式}
作用: 获取数据. 获取的是域对象(pageContxt,request,session,application)中存储的数据
EL执行运算
获得常用WEB开发的对象.

简单数据: username= "dusig"
${username} --> "dusig"

数组/list: ${key[index]}

map: ${key.键}, key就是存到域里面的key,键是map的键

对象: ${key.属性名}

特殊情况:[]和.方式的区别

​ 只要是能用.的都可以使用[]

​ 带下标(数组,list)要用[]

​ 有特殊字符的要用[]

获取的是四个域范围的值,存入四个域中

能获取到则获取,获取不到返回" "字符串 ,不是返回null

${域中属性名}:依次从pageScope,requestScope|sessionScope|applicationScope中查找指定的属性

​ 若找到,立即返回,且结束该次查找

​ 若找不到返回""

若key中出现了".""+""-"等特殊的符号的时候,快捷获取的方式不好使,必须使用以下方式:

​ ${xxxScope["属性名"]}


特殊情况:

<%

    request.setAttribute("aa.bb", "ccc");



    Map map = new HashMap();

    map.put("a.b", "c");

    

    request.setAttribute("m", map);

%>

<!--获取不到  -->

${aa.bb }

<!--使用如下方式  -->

${requestScope["aa.bb"] }

  <!--获取不到  -->

  ${m.a.b }



  <!--使用如下方式  -->



  ${m["a.b"] }

非空判断: ${empyt 属性名};属性名 就是域对象里面的key值
+: +只能做加法运算,不能拼接字符串

获取参数相关的:

param , 作用相当于request.getParameter() name=zs&age=18 ${param}--> ${param.name}



paramValues,作用相当于request.getParameterValues(name) name=zs&age=18&hobby=lq&hobby=zq

获取请求头信息相关的

header



headerValues

全局初始化参数相关

initParam

获取cookie:
Cookie c=new Cookie("lastTime","123123213");

​ response.addCookie(c);

${cookie} 

​ ${cookie.lastTime} //根据key获得的当前的cookie对象

​ ${cookie.lastTime.value}; //获得的当前的cookie存的值 ---> 原理cookie对象.getValue();


JSTL:标签库:
if标签语法

<c:if test="el表达式${..}" [var="给之前的表达式的结果起个名字"] [scope="将结果保存在那个域中 默认page"]>

</c:if>

eg:
<%request.setAttribute("a", 3); %>

<c:if test="${a>1}" var="i" scope="page">



</c:if>
${i }

choose标签:
<%

    request.setAttribute("a", "前端");

%>



<c:choose> 

    <c:when test="${a == '前端' }">

        前端

    </c:when>
</c:choose>

foreach:
c:forEach中的varStatus属性。

  指向一个字符串,该字符串引用一个对象。  map.put("vs",一个对象);



这个对象记录着当前遍历的元素的一些信息:



     index:返回索引。从0开始



       count:返回计数。从1开始



     last:是否是最后一个元素



       first:是否是第一个元素

··················
eg:
<c:forEach items="${li }" var="p">

            <tr>

                <td>${p.pid }</td>

                <td>${p.pname }</td>

                <td>${p.price }</td>

                <td>${p.pdesc }</td>



            </tr>

    </c:forEach>
上一篇 下一篇

猜你喜欢

热点阅读