JSP
- jsp的概念
JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为.jsp。
2.体验jsp
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Date date = new Date();
request.setAttribute("myTime",date);
%>
<span style="color: red">
<%= request.getAttribute("myTime") %>
</span>
</body>
</html>
3.jsp的基本语法
jsp注释
JSP注释格式
<%-- jsp注释 --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注释</title>
</head>
<body>
<!---这个是html注释-->
<%-- 这个是jsp的注释--%>
</body>
</html>
jsp的注释不会显示在源码上,更加安全。
如果在jstl标签体内使用html的注释将会失效,所以在jsp页面中推荐使用jsp的注释。
4.jsp书写java代码的三种方式
脚本片段
脚本片段格式
格式:<% Java代码片段 %>
小结:在脚本片段中书写的Java代码,会翻译到java文件中的_jspService方法中。
脚本片段作用
在jsp翻译后的_jspService方法中,嵌入java代码
脚本片段使用注意事项
脚本片段可以分开书写,最终是组合在一起的,示例:
脚本片段内容:
<% for(int j = 0 ; j < 5 ;j++){%>
Hello World!!!<br>
<%}%>
脚本声明
脚本片段虽然可以嵌入java代码,但是如果,我们要给当前的jsp中定义一些方法或者成员变量,就行需要一个新的技术——脚本声明。
脚本声明格式
格式:<%! 书写Java代码 %>
jsp文件内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>书写java代码的三种方式</title>
</head>
<body>
<%! int i = 0 ;%>
</body>
</html>
总结:脚本声明书写的java代码会翻译在类的成员位置上。
脚本声明作用
在类的成员位置上声明方法和变量
脚本声明使用注意事项
声明方法的时候,不要声明与jsp翻译的java文件中默认的一些方法或者变量同名的方法或者变量。
脚本表达式
虽然脚本声明和脚本片段已经可以书写Java代码了,但是如果我们要使用java代码向页面输出一些内容,还是需要使用原来的response对象,比较繁琐,因此,我们需要一个更加简便的方式,可以代替response向页面输出内容——这个就是脚本表达式。
脚本表达式格式
格式:<%= 表达式 %>
总结:脚本表达式书写的java代码,会翻译到java文件中的_jspService方法内,被out.print输出到页面。
脚本表达式作用
代替response向页面输出内容
脚本表达式使用注意事项
使用表达式向页面输出内容的时候,不要同时使用response对象向页面输出内容,会出现页面内容输出顺序和代码顺序不一致。
5.jsp的执行原理
通过上述的体验jsp之后,我们发现jsp真的非常厉害,既可以编写java代码也可以直接编写html代码,相对servlet更加方便,那么jsp为什么可以直接使用reqeust 与直接编写html代码呢
jsp之所以可以编写html代码,其实本质上也是类似我们使用Servlet直接输出的。
jsp之所以直接使用 直接使用request对象,是因为我们自己编写的代码全部都落入到了service方法内部,在service方法内部一开始就已经声明了request等对象了。
6.jsp内置对象
jsp9大内置对象
常用内置对象
request : 作用范围在一次请求链中的域对象 , 在请求到达服务器时创建 , 请求响应完毕 .
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<!-- 使用request对象 存储 键值对 -->
<%
request.setAttribute("aa","AAAAAA");
%>
<body>
<!-- 查找键值对数据, 并在页面显示 -->
<%= request.getAttribute("aa")%>
</body>
</html>
pageContext : 是作用范围最小的域对象 , 只作用当前页面 . 在页面访问时创建 , 页面访问完毕销毁 .
注意 : 查找属性时从最小范围的域对象开始获取, 一旦找到 , 不再查找.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%
request.setAttribute("aa","AAAAAA");
pageContext.setAttribute("aa","BB");
%>
<body>
<%= pageContext.findAttribute("aa")%>
</body>
</html>
7.BeanUtils
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。
使用第三方工具,需要导入jar包:
BeanUtils工具常用工具类有两个:BeanUtils、ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换,常用API如下