jsp技术-01

jsp学习笔记01

虽然说现在大部分公司都开始使用前后端分离技术来开发自己的web系统,但是现在也不排除一些公司的老系统还是使用jsp+Servlet+html+css+JavaScript+spring+SpringMVC+mybatis等这些技术开发的,所以从今天开始来系统的记录一些jsp一些技术点和实战应用。

1、jsp是什么

jsp(java Servlet pages)是由html和嵌入java代码组成的服务端动态页面编写的脚本技术。简单说就是由一个HTML页面,里面使用jsp的标签,然后在jsp标签中可以写java代码。
jsp的执行顺序
jsp技术-01_第1张图片
客户端向web服务器发送请求,jsp引擎将jsp页面转化成Servlet,然后有jvm编译生成.class类文件,然后把类文件放到内存中执行,最后由服务器将结果返回给客户端。
现在开始实操
所有的jsp语法都是基于maven项目构建的,部署在本地的Tomcat web服务器中运行
工程的目录结构为:
jsp技术-01_第2张图片

2、jsp语法

2.1 jsp注释

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!h2>
<div>
    
    <h1>html注释h1>
div>
<%--jsp注释,该注释不会在浏览器中看到--%>
body>
html>

jsp技术-01_第3张图片

2.2 jsp声明

<%! 定义公共的变量、方法、类%>类似于java类中公共的变量和方法,在当前的jsp页面的任何地方都可以调用,声明的结尾和java一样都是使用“;”
注意:在导入<%@ taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c”%>这个的时候需要在maven工程中加入如下依赖


    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>3.1.0version>
    dependency>
    <dependency>
      <groupId>javax.servlet.jspgroupId>
      <artifactId>jsp-apiartifactId>
      <version>2.2version>
    dependency>
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>jstlartifactId>
      <version>1.2version>
    dependency>
<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: 23746
  Date: 2021/1/7
  Time: 16:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
    <title>jsp声明变量title>
head>
<body>
<%!
    int a=1;
    int b=3;
    String name="jsp";
    Date date=new Date();
%>
<%!
    int add(int a,int b){
      int rest=0;
      rest=a+b;
      return rest;
    };
%>

<div>
    <%
       out.println("a="+a);
       out.println("b="+b);
       out.println("name="+name);
       out.println(add(10,20));
    %>
div>
body>
html>

在这里插入图片描述

2.3 jsp表达式

<%=变量或者表达式%>:将动态信息显示在页面中

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
    <title>jsp表达式title>
head>
<body>
<%!
    int a=10;
%>
当前时间为:br>
<%=new Date()%>br>
<%="a="+a%>
body>
html>

jsp技术-01_第4张图片

2.4 jsp指令

<%@page attribute1=“value1” […attribute2=“value n”]%>:page指令用来设置jsp页面的属性和相关功能。
page指令常用属性:language、import、pageEncoding,
其中在每个jsp页面中都要设置language,一般都是java,简单说就是在jsp页面加上==<%@ page language=“java” contentType=“text/html; charset=utf-8” pageEncoding=“utf-8”%>==就行了。import声明需要导入的包
其它不常用的指令如下:
jsp技术-01_第5张图片
<%@include file=“URL”%>:在标签插入的位置插入静态文件:可以是html、jsp、js等文件,然后与当前的jsp页面组合成新的jsp页面。好处:页面代码复用、维护方便。
include.jsp

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
    <title>include jsptitle>
head>
<body>
<div align="center">jsp include指令演示div>
<%@include file="copyRight.jsp"%>
body>
html>

copyRight.jsp

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
    <title>includetitle>
head>
<body>
<%
    Date date=new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String format = simpleDateFormat.format(date);
%>
<%="wen @copyRight "+format %>
body>
html>

<%@ taglib uri=“自定义标签库存放的位置” prefix=“区分不同标签库的标签名,在页面中引用的标签也是以prefix开头的”%>
例如:在jsp页面中引入JSTL标签库<%@ taglib uri=“http://java.sun.com/jstl/core_rt” prefix=“c”%>
注意:如果要在jsp页面中写EL表达式,需要在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL。格式为:
<%@ page isELIgnored="true|false"%>
如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ page isELIgnored="false"%>

<html>
<head>
    <title>jsp taglib标签title>
head>
<body>
  <table>
      <tr>
          <td>输出值td>
      tr>
      <c:forEach begin="1" end="10" var="num">
          <tr>
              <td>
                  <c:out value="${num}">c:out>
              td>
          tr>
      c:forEach>
  table>
body>
html>

jsp技术-01_第6张图片

2.5 jsp动作

jsp主要有如下10种这些动作
jsp技术-01_第7张图片
其中jsp:include,jsp:param、jsp:forward使用较多,下面主要介绍这3种

  1. jsp:include
    语法:。flush属性用于指定输出缓存是否转移到被导入文件中,true则包含在被导入文件中,false则包含在源文件中。说白了该jsp标签与include标签类似都是引入文件到该jsp页面,不同的是在include指令中,导入文件和当前页面一块编译成一个Servlet类文件,而jsp:include动作包含的文件和当前jsp页面会被编译成2个Servlet文件,jsp:include在效率上要稍微慢一些。
<%@ page import="java.util.*" isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
    <title>jsp:includetitle>
head>
<body>
<div align="center">jsp:include指令演示div>
<%@include file="copyRight.jsp"%>
body>
html>

copyRight.jsp还是上文写过的代码

2.jsp:param
语法:
作用:用来传递参数信息,经常与jsp:forword、jsp:include结合一起使用,传递主页面的参数值到目标页面。
jsp技术-01_第8张图片
jsp:param结合jsp:include使用

<%@ page import="java.util.*" isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%--设定页面传递参数的编码格式,所有页面的编码格式要统一--%>
<%request.setCharacterEncoding("utf-8");%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
<head>
   <title>jsp:paramtitle>
head>
<body>
   <h1>主页面h1>
<jsp:include page="subPage.jsp">
   <jsp:param name="username" value="aaaa">jsp:param>
jsp:include>
body>
html>

subPage.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>subPagetitle>
head>
<body>
<%
   String username=request.getParameter("username");
%>
<%="username="+username%>
body>
html>

jsp技术-01_第9张图片

jsp:param结合jsp:forward使用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>主页面2title>
head>
<body>
<h1>主页面2h1>
<jsp:forward page="subPage1.jsp">
  <jsp:param name="password" value="1111">jsp:param>
jsp:forward>
body>
html>

subPage1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>subPage1title>
head>
<body>
<%
  String password=request.getParameter("password");
%>
<%="password="+password%>
body>
html>

在这里插入图片描述

3.jsp:forward
语法:
作用:转发请求到另外一个页面,连同请求的参数数据也会一起被转发到目标页面中,目标页面通过request.getParameter方法获得参数值
注意:进行页面跳转时请求的地址不会发送改变,动作中的url页面只能是该Web应用中的文件。
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp:forward动作title>
head>
<body>
<%
    String url="";
    int random=(int)(Math.random()*10);
    int m=random%2;
    switch (m){
        case 0:
            url="event.jsp";
            break;
        case 1:
            url="old.jsp";
            break;
    }
%>
<jsp:forward page="<%=url%>">jsp:forward>
body>
html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>奇数jsp页面title>
head>
<body>
奇数跳转页面
body>
html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>event.jsptitle>
head>
<body>
偶数跳转界面
body>
html>

在这里插入图片描述

你可能感兴趣的:(jsp,jsp,java)