Java之jsp的一些基础运用
jsp的基础知识
jsp(Java Server Page)是一个模板引擎,除了jsp还有thymeleaf,freemark,velocity。作用就是简化开发,封装了servlet响应html标签的繁琐的代码。其实jsp就是一种特殊的servlet,是一个简化的Servlet设计,它实现了在Java中使用HTML标签,JSP和Servlet一样,是在服务器端执行的。
jsp为什么说是简化的servlet呢?简化到底体现在哪?
比如作为一个html标签,我们要在页面上显示一行简单的字符串:
那么此时仅仅输出简单的一行字,就要编写这么多的代码,显得太过于繁琐,那么此时就有了jsp的诞生,让jsp代替我们写这些繁琐的代码。那么用jsp输出同样一行文字需要认为写多少代码呢?看一下下面这段代码
同样是输出“哈哈哈,我又来了!”这一行简单的文字,对比起来,我们的jsp就便捷很多。
注意
jsp相比servlet要更加便于开发,但是耦合度高,代码非常不清晰,后续的维护也会更加复杂。
jsp的三大指令
1.page
作用:用于声明jsp,(jsp=html+page指令)
page指令的属性:
- contentType=“text/html;charset=UTF-8” 指定jsp文件的mime类型和字符集
- import=“java.util.*” 为jsp的脚本中的Java代码去导包
- errorPage=“500.jsp” 如果当前页面发生异常,就跳转到500.jsp中
- isErrorPage=“true” 承认自己是不是错误处理页面,如果为true就可以使用exception内置对象
2.taglib
作用:引入外部标签库,通常用于引入jstl标签
3.include
作用:静态包含 – 两个jsp之间使用静态包含,会被tomcat服务器编译成一个servlet,可以实现脚本互通(数据互通)。
那么脚本互通体现在哪呢?我们看下面两段代码:
a.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%@include file="b.jsp"%>
<%
System.out.println(name);
%>
</body>
</html>
b.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String name="曹操";
%>
当我们访问a.jsp时,控制台可以输出“曹操”,即我们在b.jsp中输入数据name,利用include指令在a.jsp中调用并输出。
内置对象
九个内置对象:
四个域对象:pageContext、request、session、application
五个其它对象:response(响应)、out(输出)、page(当前页面)、exception(异常)、config(获取服务器的配置信息)
四大域对象的使用
1.pageContext
最小的域对象,使用范围仅限于当前页面。
存数据:pageContext.setAttribute()
页面输出:pageContext.getAttribute() out.write()
2.request
使用范围仅限于转发之间的页面。
存数据:request.setAttribute()
页面输出:request.getAttribute() out.write()
3.session
范围是一次会话,浏览器或服务器不关闭称为一次会话。
存数据:session.setAttribute()
页面输出:session.getAttribute() out.write()
4.application
范围最大的域对象,只要服务器不关即可,浏览器随意。
存数据:application.setAttribute()
页面输出:application.getAttribute() out.write()
简化版的页面输出
<%=域对象.getAttribute()%>
注释方法
<%-- jsp注释 --%> 该注释中的java脚本不会被执行
<-- html注释 --> 该注释中的java脚本会被执行,但是执行结果会被注释
jsp发展史和mvc
jsp发展史
第一阶段:只有servlet,如果响应动态资源,必须使用response.writer()去输出大量的 标签。
第二阶段:jsp出生和繁荣,因为jsp的简洁,此时完全依赖jsp,省略了servlet,当然上面提到的jsp缺点依然存在。
第三阶段:mvc模式,即jsp和servlet共存,jsp中只有少量的java代码,主要还是用于页面展示,核心功能放在servlet中(这个阶段jsp已经呈现出日渐没落的趋势)。
mvc
一种软件设计典范
m:model 模型层,泛指service层,dao层和javaBean实体类
v:view 视图层,使用jsp展示数据
c:controller 控制层,使用servlet处理请求和响应
关于jsp的分享就到这了,如有其他问题,还请各位大佬多多指正。