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>