JavaWeb基础-JSP的简单学习

JSP的的简单学习

什么是JSP?

在这里插入图片描述
JSP:Java Server Pages (Java服务器端页面),其实就在HTML中嵌入Java代码。

为什么学习JSP?

 SUN公司提供了动态网页开发技术:Servlet。Servlet自身有一些缺点,SUN公司发现了这些问题,推出了一个新的动态网页开发技术JSP。
Servlet的缺点:
 Servlet需要进行配置,不方便维护
 Servlet很难向网页中输出HTML页面内容

JSP的运行原理

创建一个JSP页面
demo01.jsp

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2020/12/8
  Time: 20:08
  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>
    <h1>Hello JSP</h1>
</body>
</html>

效果:
JSP需要发布到服务器中才可以运行的,发布项目到Tomcat中,访问JSP页面。
在这里插入图片描述
JSP的运行原理分析:
在这里插入图片描述
JSP文件翻译成Java文件,将这个Java文件编译生成class文件,运行class文件。

JSP脚本元素的基本概述

什么是JSP的脚本元素?
JSP=HTML+Java代码+JSP自身的东西
JSP的脚本元素就是在JSP中嵌入Java代码。
JSP的脚步元素的分类:
1.声明标签
语法:
 <%! 变量或方法声明 %>
 写在这个脚本中的代码,翻译成Servlet内部的成员方法。
用法:

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2020/12/8
  Time: 20:08
  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>
<%!
    //声明变量
    int i = 3;
%>
</body>
</html>

2.表达式标签
语法:
 <%= 表达式%>
 写在这个脚本中的代码,翻译成方法内部的out.print();当中的内容。
用法:<%= i %>
将i的值显示在网页上。
3.程序代码标签
语法:
 <% 程序代码 %>
写在这个脚本中的代码,翻译成方法内部的局部变量或方法内部代码片段。
用法:

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2020/12/8
  Time: 20:08
  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>
<%!
    //声明变量
    int i = 3;

%>

<%
    //程序代码
    int x = 5;
%>

<%= i
%>
//3

<%= x
%>
//5

</body>
</html>

JSP的开发模式之MVC模式

JSP开发模式:
 动态网页开发模式的发展:

在这里插入图片描述

开发中的路径问题

什么时候会遇到路径问题?
提供一些页面,在页面中会提供链接或者表单,当点击链接或者表单的时候需要进行提交,提交到Servlet中。从页面相Servlet发送请求的地址(路径)应该如何编写。
路径的分类:(通常使用绝对路径)
相对路径的写法:
 相对路径不是以/开头的
路径的使用:
 在某个目录下的页面访问Servlet
  demo01.jsp的访问路径:
   http://localhost:8080/JavaWebDemo_war_exploded/JSPdemo/demo01.jsp
  Servletdemo03的访问路径:
   http://localhost:8080/JavaWebDemo_war_exploded/Servletdemo03
 绝对路径的写法:
  通常以/开始的路径
  使用绝对路径,不需要关心当前文件和要请求文件的相对应的位置关系!
   注意:
       绝对路径分成服务器端路径和客户端路径:
         客户端路径:需要带工程名
         服务器端路径:不要带工程名

页面代码:
Servletdemo03.java

package ServletDemo;

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;

@WebServlet(name = "Servletdemo03")
public class Servletdemo03 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("Servlet Demo03...");
    }
}

demo01.jsp

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2020/12/8
  Time: 20:08
  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>
<h1>路径问题</h1>
<h3>相对路径</h3>
<a href="../Servletdemo03">相对路径访问Serveltdemo03!</a>
<h3>绝对路径</h3>
<a href="http://localhost:8080/JavaWebDemo_war_exploded/Servletdemo03">绝对路径访问Servletdemo03!</a>
<a href="/JavaWebDemo_war_exploded/Servletdemo03">绝对路径访问Servletdemo03!</a>
</body>
</html>

相对路径的写法:
 相对路径不是以/开头的
路径的使用:
 在跟路径下的页面访问Servlet
  demo02.jsp的访问路径:
   http://localhost:8080/JavaWebDemo_war_exploded/demo02.jsp
  Servletdemo03的访问路径:
   http://localhost:8080/JavaWebDemo_war_exploded/Servletdemo03
 绝对路径的写法:
  通常以/开始的路径
  使用绝对路径,不需要关心当前文件和要请求文件的相对应的位置关系!
   注意:
       绝对路径分成服务器端路径和客户端路径:
         客户端路径:需要带工程名
         服务器端路径:不要带工程名

在这里插入图片描述
页面代码:
Servletdemo03.java

package ServletDemo;

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;

@WebServlet(name = "Servletdemo03")
public class Servletdemo03 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("Servlet Demo03...");
    }
}

demo02.jsp

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2020/12/8
  Time: 20:08
  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>
<h1>路径问题</h1>
<h3>相对路径</h3>
<a href="Servletdemo03">相对路径访问Serveltdemo03!</a>
<a href="./Servletdemo03">相对路径访问Serveltdemo03!</a>
<h3>绝对路径</h3>
<a href="http://localhost:8080/JavaWebDemo_war_exploded/Servletdemo03">绝对路径访问Servletdemo03!</a>
<a href="/JavaWebDemo_war_exploded/Servletdemo03">绝对路径访问Servletdemo03!</a>
</body>
</html>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值