• jsp


    1.java web

    web服务器有

    ​ tomcat(apache)

    weblogic   (oracle
    
    	jboss  (redcat)

    ​ webphere IBM

    ​ ....

    2.tomcat 目录结构

    bin :存放二进制文件,启动,关闭tomcat
    conf:存放配置文件
    ​ --server.xml 修改端口 (端口默认是8080)
    lib:存放依赖的jar包
    logs :存放日志文件
    work : 存放运行时生成的文件
    webapps :web项目的存放目录
    temp : 存放tomcat临时文件

    3.静态网站和动态网站

      静态网站: 数据都是写死在源代码中的,无法实现内容的实时更新

      动态网站:数据是从数据库得到的,涉及到后台

    4.B/S C/S

      jsp Java Server Pages

    ​   在HTML中嵌入Java脚本代码(HTML+java)

    jsp的组成部分

    jsp的执行过程

    5.内置对象

    不需要手动创建,可以直接使用的对象,是web容器创建好的。

      1.request 客户端的请求

    返回类型方法描述
    String getParameter(name) 根据name属性获取value
    String[] getParameterValues(name) 根据name获取value,用于获取复选框的值
    Map<String,String[]> getParameterMap() 获取所有的name和value,得到的是键值对
    void setCharacterEncoding("utf-8") 设置编码
    String getRemoteAddr() 获取请求端的ip


      2.response 用于响应客户端的请求

    重定向:地址栏会改变,不能通过request传数据

    response.sendRedirect("index.jsp")

    转发:地址栏地址不会改变,可以通过request传数据

    request.getRequestDispatcher("index.jsp").forward(request,response);

      3.out 输出流对象

    ​   out对象是JspWrite类的实例,是向浏览器输出内容常用的对象。

      4.config javax.servlet.ServletConfig

    获取服务器配置(web.xml)信息

    ​ config.getInitParameter("") 获取web.xml中的初始参数

     

    5.session javax.servlet.http.HttpSession 会话 从用户访问服务器开始到用户关闭浏览器离开服务器结束。

    session数据是保存在服务端,一般用来保存用户的身份信息。

    ​ 整个会话期间,保存在session中的数据是多个页面共享。

    四大域对象(page域,request域,session域,application域)之一。

    session.setAttribute(name,value)向session中设置值

    session.getAttribute(name) 从session中获取值

    session.getId();//获取sessionid
    session.invalidate();//清除session中的数据

    当用户第一次访问服务器时,会创建一个session,保存在服务器上,服务器会创建一个cookie,将cookie 返回到浏览器上(cookie里有一个jsessionid),

    jsessionid作用:标识用户身份

    应用场景:用户登录成功后,将用户的身份信息保存到session中,在访问登陆后才能访问的页面时,都会先判断session中是否有用户的登录信息。

    cookie 保存在浏览器端

    //创建cookie
    Cookie cookie = new Cookie(name,value)
    //设置有效时间
    cookie.setMaxAge(2);//单位是s
    //获取cookie的name
    cookie.getName();
    //获取cookie的值
    cookie.getValue();
    //向浏览器添加cookie
    response.addCookie(cookie);
    //获取保存在浏览器上的cookie
    Cookie cookies[] = request.getCookies();
    -----------------------------------------------
    //cookie不能直接保存中文
    new Cookie("age", URLEncoder.encode("水电费","utf-8"));//编码
    URLDecoder.decode(cookie.getValue(),"utf-8");//解码

    参考宝典:session和cookie的区别?

    6.application javax.servlet.ServletContext 服务器应用,所有用户共享数据

    ​ 应用场景:统计网站的浏览量

    Object object = application.getAttribute("count");
            int count = 0;
            if(object != null){
                count = (Integer)object;
                count++;
            }
            out.print(count);
            application.setAttribute("count",count);

    7.exception java.lang.Throwable 异常

    ​ 要使用exception 对象,必须先加指令

    <%@page isErrorPage="true" %>

    ​ 作用:获取异常信息

    8.page 代表页面本身,相当于this

    9.pageContext javax.servlet.jsp.PageContext 页面上下文,能通过此对象获取其他八大内置对象。

    6.四大域

    PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。(page域)

    ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。

    HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。

    ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

    ​ 1)域对象作用:

    ​ 保存数据 和 获取数据 ,用于数据共享

    ​ 2)域对象方法:

     setAttribute("name",Object) 保存数据

     getAttribute("name") 获取数据

     removeAttribute("name") 清除数据

    ​ 3)域对象作用范围:

    ​ page域: 只能在当前jsp页面中使用(当前页面)

    ​ request域: 只能在同一个请求中使用(转发)

    ​ session域: 只能在同一个会话(session对象)中使用(私有的)

    ​ application域: 只能在同一个web应用中使用。(全局的)

    7.EL表达式

    Expression language

    是jsp2.0引入的一种计算和输出的java 对象的简单语言。

    作用:简化jsp中java 代码

    使用: ${}

    a:获取四个域中的数据

    ​ 取数据时默认是从小到大取(现从page域--》application域)

    比如:
    ${num}  先从page域中找name为num的数据,没有找到就去request域中找.....

    如果指定域:  (jsp文件)
    ${sessionScope.num}//从session域中找,如果session中没有,那就找不到
    ${pageScope.num}
    ${requestScope.num}
    ${applicationScope.num}
     
    <%
    //向域中设置数据
    pageContext.setAttribute("num",15);
    //------寂寞的分割线--------
    Emp emp = new Emp();
    emp.setEname("张三");
    pageContext.setAttribute("emp",emp);
    //------寂寞的分割线--------
    String[] s = {"abc","efg"};
    pageContext.setAttribute("strs",s);
    //------寂寞的分割线--------
    List<String> list = new ArrayList<>();
    list.add("eee");
    list.add("fff");
    pageContext.setAttribute("list",list);
    //------寂寞的分割线--------
    Map<String,String> map = new HashMap<>();
    map.put("key1","ppp");
    map.put("key2","yyy");
    map.put("key3","kkk");
    pageContext.setAttribute("m",map);
    %>
    <h1>获取简单数据类型的值:${sessionScope.num}</h1>
    <h1>获取对象的属性:${emp.ename}</h1>
    <h1>获取数组中的值:${strs[0]}</h1>
    <h1>获取list中的值:${list[0]}</h1>
    <h1>获取map中的值:${m.key1}</h1>

     

    b.运算

    术语定义
    算术型 +、-(二元)、*、/、div、%、mod、-(一元)
    逻辑型 and、&&、or、||
    关系型 ==、eq、!=、ne、gt、<=、le、>=、ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。
    empty。空操作符是前缀操作,可用于确定值是否为空。(null和“”都返回true)
    条件型 A ?B :C。A为true,结果为B,否则为C。
     

    8.jstl

    ​ 1.jsp标准标签库(jsp standard tag Library) 简称 jstl

    ​ 2.作用:实现逻辑处理,判断,循环,格式化,字符串各种操作等等....

    ​ 3.使用:

    ​ a) 导jar包

    ​ jstl-xx.jar

    ​ b)添加指令

    (jsp文件)

    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    ​ c)使用

      <c:if test="${5<4}">
            <h1>hello</h1>
        </c:if>
    
        <c:choose>
            <c:when test="${5<4}">
                <h1>11111</h1>
            </c:when>
            <c:otherwise>
                <h1>22222</h1>
            </c:otherwise>
        </c:choose>
    
        <%
            List<String> list = new ArrayList<>();
            list.add("wwww");
            list.add("sss");
            list.add("wssgdfgwww");
            list.add("ppp");
            pageContext.setAttribute("li",list);
        %>
    
        <c:forEach var="my" items="${li}">
            <h1 style="color: red;">${my}</h1>
        </c:forEach>

    9.核心标签库

     <c:if test="${5<4}">
            <h1>hello</h1>
        </c:if>
    
        <c:choose>
            <c:when test="${5<4}">
                <h1>11111</h1>
            </c:when>
            <c:otherwise>
                <h1>22222</h1>
            </c:otherwise>
        </c:choose>
    
        <%
            List<String> list = new ArrayList<>();
            list.add("wwww");
            list.add("sss");
            list.add("wssgdfgwww");
            list.add("ppp");
            pageContext.setAttribute("li",list);
        %>
    
        <c:forEach var="my" items="${li}">
            <h1 style="color: red;">${my}</h1>
        </c:forEach>
    
     <c:forEach var="my" items="${li}" begin="0"
                   end="2" varStatus="mm">
            <h1 style="color: red;">${my} ----${mm.index} </h1>
        </c:forEach>
        <%--向页面输出--%>
        <c:out value="123"></c:out>
        <%--向域中设置key - value   可以指定域--%>
        <c:set value="zhangsan" var="user" scope="page"></c:set>
        ${user}

    10.国际化标签库(格式化标签库)

    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    11.函数标签库

    <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    //加了函数标签库就可以使用方法
    ${fn:trim(" s ")}//去除两端的空格
    ...

    12.jsp指令

    ​ 1.page 设置页面属性

    ​ 2.taglib 引入标签库

    ​ 3.include 导入(包含)页面

    ​ ·@include

    ​ · <<jsp:include>>

     

  • 相关阅读:
    C# 模拟浏览器请求
    关于获取时间后,时间格式为几天前,几小时前格式转化
    关于通用的C#后台获取前台页面的标签的正则表达式
    关于getHTML()方法和getHtmlAjax()方法 GetHttpLength, 清除HTML标签
    性能测试术语
    聚合报告中90% Line涉及到百分位数的概念
    使用Windows的cmd运行(或通过批处理启动)Python项目(多目录项目)提示找不到模块的解决办法
    OSError: [WinError 6] 句柄无效的解决办法
    python中日志输出重复的解决办法
    截图方法get_screenshot_as_file()注意点
  • 原文地址:https://www.cnblogs.com/lin02/p/11234000.html
Copyright © 2020-2023  润新知