【JavaWeb】 jsp学习了解
前言
这里简单说些jsp,这里推荐一个教程网站,菜鸟教程,找到jsp这一节,说的非常清楚挺好的,这里也是参考那个,大家可以把那里当作教程,然后这里是课堂然后一起看,效果更好哦,看前点个赞,养成好习惯👍
书接上回:
【JavaWeb】-Tomcat、Eclipse使用项目搭建(一)
【JavaWeb】-mysql、jdbc、dbcp使用(二)
【JavaWeb】-MVC、Servlet学习(三)
【JavaWeb】-Cookie、Session,token+学习(四)
介绍
JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
前面我们知道了servlet,其实jsp页面最后就是被转换为servlet的html页面,这里我们可以看下:
新建一个test.jsp页面,前面虽然我们不知道但是也应用了
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.print("<h1>hello world</h1>");
%>
</body>
</html>
我们运行一下:
是不是就输出了我们输出的<h1>hello world</h1>
,在很早之前没有jsp这门技术,都是通过servlet在servlet通过这样输出,然后将html页面输出到页面,像这样,但是是不是很不方便,就是因为不方便技术才会进步嘛
我们可以直接写html然后同时在html里面也可以写java代码,其实最后就会产生了jsp这门技术,而其实也是通过jsp页面转化成功servlet这样,那过多的话就不说了,我们直接看知识点和如何使用;
jsp语法
我们先来学习jsp语法,怎么在jsp页面写java代码;
我们想要写java代码可以用以下形式用<%%>括起来里面写java代码:
以下把菜鸟教程当教科书,做教科书参考:
<% 代码片段 %>
比如我们上面所写的:
<%
out.print("<h1>hello world</h1>");
%>
设置编码
如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
我们在新建jsp页面的时候,会自动添加上,前提是设置了eclipse设置了jsp的编码格式为utf-8
window —-> perferences:
声明变量
<%! declaration; [ declaration; ]+ ... %>
比如我们声明一个变量;
<%! String s = "hello world"; %>
其实也可以在<%%>里面声明,但是鉴于规范可以在<%! %>声明
如何在html里面输出表达式:
<%= 表达式 %>
其实也可以在<%%>里面输出,但是这里不是用System.out中输出,这样是向控制台输出,而是用jsp内置对象out向屏幕输出:
就像刚才的,这样是向屏幕输出,而过使用了System.out就会向你的控制台输出;
<%
out.print("<h1>hello world</h1>");
%>
那为什么又有一个这样的输出呢,<%= 表达式 %>,你不要觉得不好,这个贼还用,比如这样,我们通过servlet传递到前台的值,可以直接作为input的value,特别好用;
<input value="<%= 表达式 %>" />
还有一些其他的,都在这里了
语法 | 描述 |
---|---|
<%-- 注释 --%> | JSP注释,注释内容不会被发送至浏览器甚至不会被编译 |
HTML注释,通过浏览器查看网页源代码时可以看见注释内容 | |
<% | 代表静态 <%常量 |
%> | 代表静态 %> 常量 |
’ | 在属性中使用的单引号 |
" | 在属性中使用的双引号 |
指令
其实也不是什么,接着我们的理解,我们比如要使用utli包里面的东西是不是要导包啊,这时候可不是<% %>就行了,这里我们叫指令,没几个,看看吧:
<%@page import="util.TokenUtil"%> //导包
<%@ include ... %> 包含其他文件
<%@ taglib ... %> 引入标签库的定义,可以是自定义标签
加大内置对象
和我们在servlet中使用差不多,这里比如out我们也使用过了:
对象 | 描述 |
---|---|
request | HttpServletRequest类的实例 |
response | HttpServletResponse类的实例 |
out | PrintWriter类的实例,用于把结果输出至网页上 |
session | HttpSession类的实例 |
application | ServletContext类的实例,与应用上下文有关 |
config | ServletConfig类的实例 |
pageContext | PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问 |
page | 类似于Java类中的this关键字 |
exception | exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象 |
生命周期
那没那么多复杂的可难的,我们看一下生命周期,以下代码来自菜鸟教程:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<title>test</title>
</head>
<body>
<%!
private int initVar=0;
private int serviceVar=0;
private int destroyVar=0;
%>
<%!
public void jspInit(){
initVar++;
System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
}
public void jspDestroy(){
destroyVar++;
System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
}
%>
<%
serviceVar++;
System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");
String content1="初始化次数 : "+initVar;
String content2="响应客户请求次数 : "+serviceVar;
String content3="销毁次数 : "+destroyVar;
%>
<h1>菜鸟教程 JSP 测试实例</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>
我们把它当成servlet使用就可以了本质也就是servlet,jsp最后就是编译成一个个servlet类;
jstl
介绍
其实就是在对jsp页面编写使用的再一次简化,很简单,了解下:
引入依赖
需要连个jar包:jstl.jar
和standard.jar
常用的就是c标签了,jsp页面上添加:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
,这时候我们就可以使用C标签了
因为通过java编写输出比如很多列表的循环,我们通过jsp页面去写,会是这样的效果:
那这里的循环还是很小一段,假如我们会有很多html代码,还得去写什么<%}%>这样不管不好写,而且代码可读性太差,那通过jstl我们可以这样,只需要一个标签将html代码围住继续写,这样不光代码可读性提高了,而且是不是很方便了呢:
C语法
一个表格,我觉得一看就懂吧,就是将我们上面所用的servlet做成了标签这种类似html的标签,提高了可读性,简化了代码,这里推荐大家去菜鸟教程上观看,以及分析,这里就不做过多解释了:
小结
这里简单了解下,后面我写了一个小例子,简单的小例子,麻雀虽小五脏俱全,那这里还不点个关注,不然之后找不到了,拜拜~