JSP,Servlet入门基础

1.Scriptlet

在jsp中最重要的部分就是Scriptlet,所有嵌入在html代码中的java程序,在jsp中一共有三种格式:

  1. <% %>:java脚本段,可以定义局部变量,编写语句
  2. <%! %>:声明,可以定义全局变量,方法,类
  3. <%= %>:表达式,数据一个变量或具体内容

2. include

2.1 include静态包含

语法格式:

<%@include file="相对路径"%>

2.2 include动态包含

语法格式:

<jsp:include page="相对路径"></jsp:inculde>

2.2.1 include动态包含传参

当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格


传递参数:
<jsp:include page="相对路径">
	<jsp:param name="参数名" value="参数值">
</jsp:inculde>



获取参数:
request.getParameter(参数名)
通过指定参数名获取参数值


例子如下:
这是index.jsp

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/4
  Time: 19:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  //这里设置了个局部变量
  <%
    String str="hello world";
  %>
  然后导入top.jsp并且将局部变量进行传参
  <jsp:include page="top.jsp">
      <jsp:param name="hello" value="<%=str%>"/>
  </jsp:include>

  </body>
</html>

这是top.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/5
  Time: 15:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>顶部内容</h2>
    <%
        String str=request.getParameter("hello");
        out.print(str);
    %>
</body>
</html>

3. JSP的四大域对象

在JSP中提供了四种属性的保存访问,所谓的属性保存范围,指的就是一个设置的对象,可以再多少个页面中保存并可以继续使用

  1. page范围

pageContext:直再一个页面中保存属性,跳转之后无效

  1. request范围

request:只会一次请求中保存,服务器跳转后依然有效,但是客户端跳转将会无效

  1. session范围

在一次会话范围中,无论何种跳转都可以继续使用

  1. application范围

在整个服务器上保存

在这里插入图片描述

3.1 设置域对象

A服务器端(index.jsp)

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/6
  Time: 20:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <%
        pageContext.setAttribute("name1",1);
        request.setAttribute("name2",2);
        session.setAttribute("name3",3);
        application.setAttribute("name4",4);
    %>
    <jsp:forward page="index_2.jsp"></jsp:forward>
  </body>
</html>

B服务器端(index_2.jsp)

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/6
  Time: 21:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Object a1=pageContext.getAttribute("name1");
        Object a2=request.getAttribute("name2");
        Object a3=session.getAttribute("name3");
        Object a4=application.getAttribute("name4");
        out.print(a1+"   "+a2+"   "+a3+"   "+a4);
    %>
</body>
</html>

显示效果如下:
在这里插入图片描述

4.JSP指令

JSP指令的作用是为当前页面做一些基本的属性设置,为当前的页面的运行提供基本环境,根据功能的不同,JSP中包含了三类指令:page指令,即网页指令,include指令,即包含指令;及taglib指令,即标签库指令,无论哪种指令,其语法格式均为如下形式:

<%@ 指令名称 属性名=属性值 属性名=属性值 ....%>

4.1 page 指令

page指令用于设置当前JSP页面的相关信息,一个JSP文件中可以包含多个page指令,常用的page指令的属性意义以及用法如下:

4.1.1 pageEncoding属性(更改字符编码)

pageEncoding属性用于设置当前JSP页面所使用的字符编码格式
语法:

<% page pageEncoding="UTF-8"@%>

4.1.2 contentType属性(指定文件更改字符编码)

和pageEncoding属性差不多,只不过它能指定哪个文件
语法:

<%@ page contentType="文件名/后缀名;charset=编码"%>

4.1.3 import属性

就是java的import,导包,但是这个属性是要放在page指令里写的

<% page import="java,util.Date"%>

类似这样就能打开Date包

4.1.4 errorPage属性(错误跳转)

当你的页面报错时,如果文件中有设置errorPage属性,则会跳转到对应的文件中

<% page errorPage="文件.后缀名"%>

4.15

4. 服务器跳转和客户跳转

//这是服务器跳转
<jsp:forward page="跳转网页的文件路径" ></jsp:forward>
//这是客户跳转(简单点就是超链接)
<a> </a>

5. EL表达式

EL只能获取数据,不能设置数据,是一种在JSP页面中获取数据的简单方式,在JSP页面的任何静态部分均可通过${expression}的形式获取到指定表达式的值

5.1 获取数据

5.1.1 从四大域获取数据

优先从最小范围获取数据
在这里插入图片描述

5.1.2 查找指定域的值

若想要查找指定域的属性值,就可以

<%
	变量=${applicationScope.属性名}
%>

在这里插入图片描述

5.1.3 访问Bean的属性

EL可以通过 ${key.属性}的方式获取到指定对象的指定属性值,其底层实际调用的是该对象的相应属性的get方法
例子如下:

首先我们创建一个Student类(需要注意的是该类不可以在默认包下,因为JSP文件无法Import它)

package student;

public class Student {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private String name;
    private  int age;



    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "student.Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

接着创建JSP文件

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/18
  Time: 15:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="student.Student" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    Student stu=new Student("kobayashi",18);
    pageContext.setAttribute("student",stu);
  %>
    学生名:${student.name}
    年龄:${student.age};
  </body>
</html>

显示效果如下
在这里插入图片描述

5.1.4 访问数组中的元素

例子如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" import="student.Student" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    String[] names={"1","2","3"};
    pageContext.setAttribute("names",names);
  %>
    数字是${names[1]}
  </body>
</html>

显示效果如下
在这里插入图片描述

5.1.4 获取List中的元素

例子如下:

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/18
  Time: 15:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="student.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    Student stu1=new Student("kobayashi",18);
    Student stu2=new Student("sakura",19);
    Student stu3=new Student("satokazuma",20);
    ArrayList<Student> list=new ArrayList<Student>();
    list.add(stu1);
    list.add(stu2);
    list.add(stu3);
    pageContext.setAttribute("list",list);
  %>
    学生名:${list.get(1).name}
    年龄:${list.get(1).age}
  </body>
</html>

5.1.5 获取Map中的元素

例子如下:

<%--
  Created by IntelliJ IDEA.
  User: kobayashi
  Date: 2021/4/18
  Time: 15:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="student.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    Map<String,Integer> map=new HashMap<>();
    map.put("kobayashi",18);
    map.put("satokazuma",19);
    map.put("sakura",20);
    pageContext.setAttribute("map",map);
  %>
    年龄:${map.get("kobayashi")}
  </body>
</html>

5.2 EL的运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值