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>>

 

原文地址:https://www.cnblogs.com/lin02/p/11234000.html