javaweb基础知识之jsp(1)

JSP:全称java server page,在HTML中嵌入java代码,更擅长页面展示

1.jsp技术基础知识

         (1)运行原理:jsp在第一次被访问时会被web容器翻译成servlet,即jsp本质上是servlet。

         (2)jsp脚本

                        <%java代码%>---------------内部的java代码翻译到service方法的内部

                        <%!java代码%>---------------会被翻译成servlet的成员的内容

                        <%=java变量或表达式%>-----会被翻译成service方法内部out.print()

         (3)jsp注释

                        HTML注释: <!--注释内容-->--jsp源码、翻译后的servl和HTML源码均可见

                        jsp注释:<%--注释内容--%>--仅jsp源码中可见

                        java注释://单行注释  /*多行注释*/--jsp源码和翻译后的servlet可见

                       

扫描二维码关注公众号,回复: 12915326 查看本文章

          (4)jsp指令:指导jsp翻译和运行的命令

                <%@ page contentType="text/html;charset=utf-8" language="java"%>

                <%@ include file="/jinclude.jsp" %>

                <%@ taglib uri="xxx" prefix="c" %>

            (5)jsp九大隐藏对象:

                    out、request、response、config、session、  application、page、pageContext、exception

            (6)jsp静态与动态包含关系:

            (7)jsp转发代码:<jsp:forward page="hello.jsp"></jsp:forward>

2、EL表达式:

        (1)解释:全名expressin language,它提供了在jsp中简化表达式的方法,让jsp的代码更加简化,可以嵌入式在jsp页面内部,减少jsp脚本的编写。

        (2)语法:${EL表达式}

        (3)四大域中数据:

                pageContext域:${pageScope.key}

                request域:${requestScope.key}

                session域:${sessionScope.key}

                application域:${applicationScope.key}

        (4)EL从四个域中获取某个值${key},顺序如下(找到即不再往下找)

                pageContex、request、session、application

        (5)EL的内置对象:pageScope/rquestScope/sessionScope/applicationScope

                                        param.paramValue/header.headerValue/initParam/cookie

                                        pageContext

        (6)EL表达式:如${1+1}/${1>2}/${empty user}/${3>2?true:false}等等

3、JSTL标签

        (1)介绍:jstl(java servlet page standard tag library),jstl标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能,jstl出现的目的同EL一样也是要代替jsp页面中的脚本代码。

        (2)配置:下载好文件--idea中的web的web-inf目录下创建lib包---找到解压后的jstl下载文件中的lib下的两个文件jstl.jar和standard.jar复制到idea创建的lib包

                          idea中file---setting---launguages & frameworks下的schemas and dtds--选择右边的“+”---在URI栏中输入内容:http://java.sun.com/jsp/jstl/core---在file中选择解压后的jstl下载文件中的tld/c.tld文件---ok---apply---ok

        (3)在使用文件jsp中配置:

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

        (4)jstl标签的if和foreach标签使用示例代码如下:

<%--
  Created by IntelliJ IDEA.
  User: qinguangguo
  Date: 2020/8/13
  Time: 10:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jstl标签应用示例</title>
</head>
<body>
    <c:if test="${1+1>1}">
        welcome to our site!
    </c:if>
    <c:if test="${1+1==2}">
        thanks for your coming!
    </c:if>
    <c:forEach begin="0" end="${10}" var="i">
        ${i}
    </c:forEach>
    <%--<c:forEach items="${list}" var="user">--%>
        <%--${user.name}--%>
    <%--</c:forEach>--%>
</body>
</html>

package study.zx.jstl;

import study.zx.bean.Phone;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "PhoneServlet",urlPatterns = "/phone")
public class PhoneServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Phone phone1=new Phone ();//alt+enter键创建类
        phone1.setId (001);
        phone1.setName ("小米1");
        phone1.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
        phone1.setPrice (800);

        Phone phone2=new Phone ();//alt+enter键创建类
        phone2.setId (002);
        phone2.setName ("小米2");
        phone2.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
        phone2.setPrice (1000);

        Phone phone3=new Phone ();//alt+enter键创建类
        phone3.setId (003);
        phone3.setName ("小米3");
        phone3.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
        phone3.setPrice (1200);

        Phone phone4=new Phone ();//alt+enter键创建类
        phone4.setId (004);
        phone4.setName ("小米4");
        phone4.setImage ("https://img11.360buyimg.com/n7/jfs/t1/104812/35/17303/242507/5e848fb1E2c1d6eff/d2db1412dcce1d96.jpg");
        phone4.setPrice (1800);

        List<Phone> list=new ArrayList<Phone> ();
        list.add (phone1);
        list.add (phone2);
        list.add (phone3);
        list.add (phone4);

        request.setAttribute ("list",list);
        request.getRequestDispatcher ("/phone.jsp").forward (request,response);


    }
}

<%--
  Created by IntelliJ IDEA.
  User: qinguangguo
  Date: 2020/8/13
  Time: 11:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>手机列表</title>
</head>
<body>
  <c:forEach items="${list}" var="phone">
      <div>
          <img src="${phone.image}" width="180" height="180">
          <p>
              <a href="http://www.baidu.com">${phone.name}</a>
          </p>
          <p>
              商城价:${phone.price}
          </p>
      </div>
  </c:forEach>

</body>
</html>

4.

猜你喜欢

转载自blog.csdn.net/preston555/article/details/110090104