jsp总结笔记

JSP

1.jsp基础语法
  1. JSP头元素 模块

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
  2. JSP表达式

    意义:JSP脚本表达式用于将程序输出到客户端

    语法:<%= 变量或者表达式%>

    举例:

    <%= new Date()%>
    

    注意:1.jsp引擎再翻译脚本表达式时,将程序数据转换成字符串,然后再响应位置用out.print(…)将数据给客户端

    ​ 2.变量或者表达式后不能加分号;

  3. JSP脚本片段

    再片段里可以写多行Java代码

    语法:<% Java代码 %>

    举例:

    <%
        int sum=0;
        for (int i=1;i<=100;i++){
            sum+=i;
        }
        out.println("<h1>Sum="+sum+"</h1>");
    %>
    

    注意:

    • jsp脚本片段只能出现Java代码,不能出现其他的,jsp引擎翻译jsp页面时,会将片段中的Java代码原封不动的放在Servlet中的_jspService方法里
    • 在<% %>里只能定义变量 编写语句,不可定义方法
    • 在jsp页面中可以有多个脚本片段,在两个或多个片段之间可以前导文本 html或其他jsp元素
    • 多个片段的代码可以相互访问
  4. JSP声明

    jsp页面中编写的所有代码,默认会翻译到servlet中的service()方法里,而就是怕声明的Java代码放到_jspService()里面

    语法: <%! Java代码 %>

    举例:

    <%!
    static { 
        System.out.println("loading Servlet!"); 
    }
    
    private int globalVar = 0;
    
    public void jspInit(){
        System.out.println("initializing jsp!");
    }
    %>
    
    <%!
    public void jspDestroy(){
        System.out.println("destroying jsp!");
    }
    %>
    

    注意:

    • 多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
    • JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。

附加:

自定义404和500页面

在当前项目的web.xml添加如下代码

<!--   1.配置404页面 -->
    <error-page>
        <error-code>404</error-code>
        <location>/error/4041.jsp</location>
    </error-page>
<!--    2.配置500错误页面-->
    <error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>
2. JSP指令

网页常见的顶部和底部信息的实现

方式一:

<%@include file="common/header.jsp"%>
<h1>网页主体</h1>
<%@include file="common/footer.jsp"%>

弊端:这种方法是拼接到一个网页,本质相当于是一个网页,变量不可重名

方式而:

<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>

总结:常用的是第二种方式 jsp:include:拼接页面,本质还是三个

3. 九大内置对象及作用域
  • PageContext

  • Request

  • Session

  • Response

  • Application

  • config

  • out

  • page

  • exception

    作用:存放数据 eg:

    pageContext.setAttribute("name1","小杭1");    //保存的数据旨在一个页面有效
    request.setAttribute("name2","小杭2");        //在一次请求有效,请求转发会携带这个数据
    session.setAttribute("name3","小杭3");        //一次会话中有效 从打开浏览器到关闭浏览器
    application.setAttribute("name4","小杭4");    // 在服务器中有效,打开服务器到关闭服务器
    

    取出数据(使用EL表达式会更加方便):

    String name1 =(String) pageContext.findAttribute("name1");
    String name2 =(String) pageContext.findAttribute("name2");
    String name3 =(String) pageContext.findAttribute("name3");
    String name4 =(String) pageContext.findAttribute("name4");
    String name5 =(String) pageContext.findAttribute("name5");
    
4. EL表达式,jsp jstl标签

需要在Maven导包

    <!-- 1.添加jsp需要的依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
    </dependency>
<!--    2.到jstl的包-->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!--      3.JSTL标签库依赖-->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
  1. EL表达式 ${ }

    • 获取数据
    • 执行运算
    • 获取web开发常用对象
  2. JSP标签

    <% request.setCharacterEncoding("utf-8");%>	//设置编码防止乱码
    <jsp:forward page="jsptag2.jsp">  
        <jsp:param name="name" value="小杭"/>
        <jsp:param name="age" value="20"/>
    </jsp:forward>
    
    

    取出数据

    <%= request.getParameter("name")%>
    <%= request.getParameter("age")%>
    
  3. JSTL表达式

    作用:就是为了弥补HTML标签的不足

    核心标签

    ​ 使用前必须引入核心标签库

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    • EL表达式获取表单的数据

      ${ parm. 参数名}

      when判断小案例 ,输入成绩判断等级

      <form action="corewhen.jsp" method="post">
          <%--EL表达式获取表单的数据 ${param.参数名}--%>
          <input type="text" name="score" value="${param.score}">
          <input type="submit" value="提交">
      </form>
      
      <%--when判断--%>
      
      <c:choose>
          <c:when test="${param.score>=90 && param.score <= 100}">
              优秀
          </c:when>
          <c:when test="${param.score>=80 && param.score<90}">
              良好
          </c:when>
          <c:when test="${param.score>=60 && param.score<80}">
              中等
          </c:when>
          <c:when test="${param.score>=0 && param.score<60}">
              不及格
          </c:when>
          <c:when test="${param.score<0}">
              输入错误!成绩范围[0,100]
          </c:when>
      </c:choose>
      

      for Each遍历数组

      <%
          int arr[] = {1,2,3,4,5,6};
          request.setAttribute("array",arr);	//把这个数组存放在Request
      %>
      <%--  begin代表下标为多少开始遍历,end下标为多少结束 step 步长代表for里的i++ --%>
      <c:forEach var="arr" items="${array}" begin="2" end="4" step="1">
          <c:out value="${arr}"/> <br>
      </c:forEach>
      

    格式化标签

    SQL标签

    XML标签

5. JavaBean

JavaBean是一个实体类(对应包名可以表示为com.wei.entity) ,一般是用来和数据库的字段做映射,ORM 有固定的写法

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法

ORM: 对象关系映射

  • 表 ----->类
  • 字段 ----->属性
  • 行记录 ----->对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值