什么是JSP?

  JSP就是一个可以写Java代码的HTML页面

  JSP是什么?

  JSP是Servlet,JSP的本质就是Servlet

  Tomcat的web.xml文件下有这样几段代码:

  看到下面的通配符了没? *.jsp 不论是什么,只要结尾是.jsp的都会去访问 JspServlet 所以JSP的本质就是Servlet

   写一个JSP之后,会生成.java和.class文件,看看里面其实jsp继承了HttpServlet,再看看它的service方法,里面居然是out.write.......................

所以,JSP的本质很清楚的。Servlet里面写输出HTML很恶心,很麻烦。所以Java搞了一个JSP,让我们在HTML里面写Java,感觉是很爽,其实底层还是Java在out.Write很恶心的代码,只不过我们开发人员不写了而已

  JSP的基础语法

  来介绍一下JSP的基础语法:

  <!--这个是HTML的注释,会出现在代码中,被Servlet的out给write出来-->

    <%---这个是JSP的注释,Java注释,不会出现在代码中--%>

    <%
//这里面可以写Java代码,但是存在于jspServlet的service方法内
String name="许嵩";
%> <%!
//这里可以写Java代码,但是存在于jspServlet类中作为成员变量,可以写方法和修饰符
private String name="只有我能写private";
public void Vae(){};
%>

两个注释,两个写Java代码的,没了

  现在学到这里,我希望使用JSP来做一个事情,我希望定义一个变量,然后判断这个变量的大小来在网页上输出一句话,我们来体验一下

  JSP的恶心之处

<%--
Created by IntelliJ IDEA.
User: Vae
Date: 2019/1/7
Time: 18:02
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>
北京时间:<%=new java.util.Date().toLocaleString()%> <!--这个是HTML的注释,会出现在代码中,被Servlet的out给write出来--> <%---这个是JSP的注释,Java注释,不会出现在代码中--%> <%
//这里面可以写Java代码,但是存在于jspServlet的service方法内
String name="许嵩";
%> <%!
//这里可以写Java代码,但是存在于jspServlet类中作为成员变量,可以写方法和修饰符
private String name="只有我能写private";
public void Vae(){};
%> <%
Integer num=10;
if (num > 5 ) {
%>
这个数字大于5
<%
}else if (num < 5) {
%>
这个数字小于5
<%
}else
%>这个数字等于5
<%
%> </body>
</html>

结果当然是ok的,真是恶心的写法。。。。。。。。。。。

  JSP的三大指令

1.page

2.include

3.taglib  

一、page指令

除了上面的page指令还有错误页面

<%@ page contentType="text/html;charset=UTF-8" language="java"  errorPage="error.jsp" %>

可以写一个这个,然后新建一个jsp来作为error页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<%
String msg = exception.getMessage();
%>
出现异常信息:<%=msg%>

那我很多的JSP,我不想每个都写这个errorpage,我可以新建一个全局化的错误页面,在WEB-INF文件夹下的web.xml里面配置一下

    <!--全局的初始化错误页面-->
<error-page>
<error-code>404</error-code>
<location>/jspDemo/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/jspDemo/404.jsp</location>
</error-page>

然后把JSP里面的errorPage的指令删了就可以了,否则就近原则会选择那个的,现在就可以使用我们全局的错误页面了

二、include指令

这个include指令主要是来解决JSP的静态包含和动态包含的。假如我们的网页有头部,中间部分和底部。那么我们顶部和底部呢其实是不变的,变化的只有我们中间的那一部分而已。所以这里我们要对网页进行模块划分一下。这个其实和我们讲的frameset差不多

先来看看静态包含的代码:

<%--
Created by IntelliJ IDEA.
User: Vae
Date: 2019/1/7
Time: 20:37
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>
<%@include file="top.jsp"%><br> 我是中间<br> <%@include file="foot.jsp"%><br> </body>
</html>

头部:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
我才是头

底部:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
我才是脚

可能你们觉得,我的头部和底部的JSP为啥删的只剩下文字和page指令了。其实是这样的,静态包含的include,相当于把其他的JSP复制粘贴过来,如果我不删除多余的<html><body>标签啥的,全都会复制过来的,一团糟。所以我删了

试试

动态包含其实差不多

<%--
Created by IntelliJ IDEA.
User: Vae
Date: 2019/1/7
Time: 20:37
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> <jsp:include page="top.jsp">
<jsp:param name="name" value="许嵩"></jsp:param>
</jsp:include> <br> 我是中间<br> <jsp:include page="foot.jsp"></jsp:include><br> </body>
</html>

就是多个参数传递

三、taglib

  要先导入jar包,我是使用maven直接导入的 ,使用很简单,先引入标签库

maven直接导入就可以,如果还不行的话,可以把jstl包放到你的WEB-INF下面的lib文件夹里,然后就可以了,jstl的jar包在你的maven仓库里面,搜索一下就有了

JSP的九大内置对象和四大作用域

所谓的内置对象就是可以在<%%>里面直接写的,有9个。有的没有提示需要自己手打,例如out.write

四大作用域,和Servlet的三大作用域差不多

Java Web之JSP的更多相关文章

  1. Java Web之JSP技术

    JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比htm ...

  2. java攻城师之路--复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

  3. Java Web(五) JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

  4. 初学Java Web(6)——JSP学习总结

    为什么要学习 JSP Servlet 的短板: Servlet 的出现,是为了解决动态输出网页的问题. 虽然这样做目的能达到,但是存在一些缺陷: 在 Servlet 输出网页片段非常恶心 (可读性差, ...

  5. 复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

  6. Java Web(六) JSP

    现在的Java Web开发已经很少使用JSP脚本了,业务逻辑都交给Servlet处理,JSP只负责显示视图,所以接下来的内容就对JSP脚本不做叙述了... JSP概述 JSP全名为Java Serve ...

  7. java web中jsp常用标签

    在jsp页面开发过程中,经常需要使用JSTL(Java Server Pages Standard Tag Library)标签开开发页面,是看起来更加的规整舒服. JSTL主要提供了5大类标签库: ...

  8. java web中jsp,action,service,dao,po分别是什么意思和什么作用

    JSP:全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动 ...

  9. 天坑 之 java web servlet+jsp项目 配置后 404 (MyEclipse转eclipse)

    最近搞一个自己的博客系统玩,用了servlet+jsp,结果发现了两个大问题: 1.无法 Export 出 WAR文件: 2.生成WAR,放置到TOMCAT的 webapps目录后,http://lo ...

随机推荐

  1. POJ2763-Housewife Wind-树上单点修改区间求和

    这道题可以树链剖分做.但是最近在给学弟搞数据结构复习了LCA树状数组RMQ 然后就搞了一发LCA+树状数组维护. dis数组维护当前点到根节点的权值和.则dis(u,v) = dis[u]+dis[v ...

  2. K - Transformation HDU - 4578 线段树经典题(好题)

    题意:区间  加   变成定值 乘  区间查询:和 平方和 立方和 思路:超级超级超级麻烦的一道题  设3个Lazy 标记分别为  change 改变mul乘 add加  优先度change>m ...

  3. SpringBoot添加CORS跨域

    配置CORSConfiguration 添加CORS的配置信息,我们创建一个CORSConfiguration配置类重写如下方法,如图所示: @Override public void addCors ...

  4. SpringMVC 拦截器使用说明

    spring-content.xml <!-- 配置用于session验证的拦截器 --> <!-- 如果有多个拦截器满足拦截处理的要求,则依据配置的先后顺序来执行 --> & ...

  5. 【HDU - 4340】Capturing a country(树形DP)

    BUPT2017 wintertraining(15) #8A 题意 n(<100)个城市组成的树.A攻击i城市需要a[i]代价,B需要b[i].如果一个城市的邻居被A攻击了,那么A攻击它只要A ...

  6. docker 创建私有仓库

    由于国内访问国际网络缓慢,从DockerHub下载镜像的速度感人,所以我们有必要在本地或者自己的云服务器上搭建一套镜像仓库,提高容器下载速度使用私有仓库需修改地址:Centos 7 Docker配置: ...

  7. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  8. Android 程序优化总结

    第一部分 编程规范 1.1 基本要求: 程序结构清晰,简单易懂,单个函数的程序行数不得超过100行. 打算干什么,要简单,直接. 尽量使用标准库函数和公共函数 不要随意定义全局变量,尽量使用局部变量. ...

  9. 第一次使用cisco packet tracer

    搭建一个如图所示的网络,左边局域网是10.0.0.0网段,右边局域网是12.0.0.0网段,中间为广域网11.0.0.0网段 上面的成功了,但是不是很熟悉,下面重新来一遍 1.先用可视化界面建立一个如 ...

  10. [JLOI2016/SHOI2016]侦察守卫(树形dp)

    小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有N个节点的树. 游戏中有一种道具叫做侦查守卫,当一名玩家在一个点 ...