JSP学习

一.JSP入门

1.前言

1.1什么是JSP?

JSP是Java Server Page 是动态网页编程技术,是Java Web服务端的动态资源

HTML只能提供静态数据,JSP允许在页面中嵌套Java代码来提供动态数据。

Servlet可以生成动态数据但很难对数据进行排版,JSP可以在生成动态数据的同时方便排版。

通常把Servlet作为web应用中的控制器组件来使用,JSP作为数据显示模板来使用。

其实JSP就是一个Servlet,当我们第一次访问JSP时,JSP引擎会将这个JSP翻译成Servlet,放在Tomcat中的work目录下。

1.2一些设置

Step1:

二.JSP的语法

1.注释

显示注释

能在客户端查看的注释,即通过查看网页源代码可以看到

1.继承HTML风格的注释

<!-- Hello-->

2.隐式注释

不能在客户端查看的注释

<%--Hello--%>                CTRL+/快捷键
//                           写在Java脚本段里的单行注释
/**/                         写在Java脚本段里的多行注释

 2.Scriptlet 脚本小程序

三种脚本段

第一种:<%        %>        定义局部变量,编写语句          生成的代码在service方法体中

第二种:<%!        %>       声明类,方法,全局变量         生成的代码在Servlet类体中

第三种:<%=        %>      输出变量或字面量        生成代码在service方法中相当于out.print()         

演示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int a = 10;
    System.out.println(a);
    out.print(a);
    out.print(b);
    out.print("Hello");
    out.write("Hello");
%>

<%!
    int b = 20;
%>

<%= b

%>

</body>
</html>

 生成的代码编译后在service方法体中,在Tomcat文件夹->work文件夹的子文件夹中可以查看JSP文件编译后的结果。

3.JSP指令标签

包含操作,可以将一些重复的代码包含进来继续使用。

 如点击下面的任何分类,顶端是不会变的,在每个页面中,顶端代码都不会变,这就是包含。

在JSP中使用包含操作有两种做法:

3.1静态包含

特点:将包含的内容进行直接的替换,在servlet引擎转译时,将两个文件的源代码整合到了一起,全放在了jspService方法中,只生成一个servlet,所以两个页面不能有相同的变量名

演示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%@include file="MyJSP02.jsp"%> //静态包含
    <h2>主体</h2>
</body>
</html>

3.2动态包含

特点:在代码编译阶段,包含和被包含部分是两个独立的部分,只有当运行时,才会动态的包含进来,好比方法的调用。各个文件可以包含相同的变量,动态包含会生成多个源码文件,如果包含两个文件,那么就会生成三个源码文件。耦合度低,耦合度就是参数的依赖程度,各个文件之间没有依赖关系。

演示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<jsp:include page="MyJSP02.jsp"></jsp:include>
/*
当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格
如果有空格的话会默认有数据,编译时找不到就会报错
如果有数据的话,看下面的语法
*/
    <h2>主体</h2>
</body>
</html>

 演示:传递参数,在MyJSP01中传递的参数,在MyJSP02中获取


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String str = "hello";
%>
<jsp:include page="MyJSP02.jsp">//这个文件名也可以用<%=url%>这种形式
    <jsp:param name="user" value="admin"/>
    <jsp:param name="msg" value="<%=str%>"/>
</jsp:include>
<%--
    name属性不支持表达式<%= %>
    value属性支持表达式
--%>

    <h2>主体</h2>
</body>
</html>
<%@ page import="javax.print.attribute.standard.MediaSize" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>顶部</h2>
<%
    String uname = request.getParameter("user");
    String msg = request.getParameter("msg");
    out.print(uname);
    out.print(msg);
%>
</body>
</html>

4.JSP的四大域对象

4.1四种属性范围

所谓属性保存范围,指的是一个设置的对象,可以在多少页面中保存并可以继续使用

1.page范围

        pageContext:只在一个页面中保存属性,跳转后无效。

2.request范围

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

        客户端跳转相当于发了两次请求,那么第一次请求就不存在了。

        如果希望不管是客户端还是服务端跳转都能保存的话,就需要继续扩大范围。

3.session范围

        session:在一次会话范围中,无论何种跳转都有效。

        无论是客户端还是服务端都可以获取。

        但是新开一个浏览器,就无法取得之前设置的session对象。

        对于服务器,每一个连接到它的客户端都是一个session。

        如果想要属性设置好,不管是否新开浏览器都能拿到,就使用application。

4.application范围

        application:在整个服务器上保存。

        所有用户(每个session)都可以直接访问。表示公共的内容。

        服务器重启后,所有属性都消失了,要重新设置。

        

4.2域对象使用的方法

 演示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //设置page域对象
        pageContext.setAttribute("name1","1");
        //设置request域对象
        request.setAttribute("
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值