前言:我们都知道,页面中的数据大多数都是保存在数据库中的,当我们要在页面中使用数据的时候,就要通过数据库将数据渲染到页面中显示,这才是数据的来源,而不是我们在做页面的时候将数据写死。因此需要java后台将数据传送到前端页面中,就是用到了JSP,动态页面格式。
一、JSP概述
(1) 什么是JSP
—JSP(Java Server Pages)是JavaWeb服务器端的 动态资源 。它与html页面的作用是相同的, 显示数据和获取数据 。
(2)JSP的组成
JSP = html + Java脚本(代码片段) + JSP动态标签
二、JSP语法
2.1 JSP脚本
JSP脚本就是Java代码片段,它分为三种:
- <%…%>:Java语句;
- <%=…%>:Java表达式;
- <%!..%>:Java定义类成员;
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>JSP演示</title>
</head>
<body>
<h1>JSP演示</h1>
<%
// Java语句
String s1 = "hello jsp";
// 不会输出到客户端,而是在服务器端的控制台打印
System.out.println(s1);
%>
<!-- 输出到客户端浏览器上 -->
输出变量:<%=s1 %><br/>
输出int类型常量:<%=100 %><br/>
输出String类型常量:<%="你好" %><br/> <br/>
</body>
</html>
结果:
2.2 内置对象out
out对象在JSP页面中无需创建就可以使用,它的作用是用来向客户端输出。
<body>
<h1>out.jsp</h1>
<%
//向客户端输出
out.print("你好!");
%>
</body>
结果:
其中
<%=…%>
与out.print()功能是相同的!它们都是向客户端输出,例如:
<%=s1%>
等同于<% out.print(s1); %>
<%=”hello”%>
等同于<% out.print(“hello”); %>
,也等同于直接在页面中写hello一样。
2.3 多个<%…%>可以通用
在一个JSP中多个<%…%>是相通的。
例如1:
<body>
<h1>out.jsp</h1>
<%
String s = "hello";
%>
<%
out.print(s);
%>
</body>
结果1:
例如2 循环打印表格:
<body>
<h1>表格</h1>
<table border="1" width="50%">
<tr>
<th>序号</th>
<th>用户名</th>
<th>密码</th>
</tr>
<%
for(int i = 0; i < 10; i++) {
%>
<tr>
<td><%=i+1 %></td>
<td>user<%=i %></td>
<td><%=100 + 1 %></td>
</tr>
<%
}
%>
</table>
</body>
结果:
三、JSP九大内置对象
在JSP中无需创建就可以使用的9个对象,它们是:
(1) out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
常用方法:
out.print():输出各种类型数据。
out.newLine():输出一个换行符。
out.close():关闭流。
(2)config(ServletConfig):对应“真身”中的ServletConfig;主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
(3)page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
(4)pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
(5)exception(Throwable):只有在错误页面中可以使用这个对象;
(6)request(HttpServletRequest):即HttpServletRequest类的对象;主要用于接受通过http协议传送到服务器的数据,request对象的作用域为一次请求.
常用方法:
Request常用的方法:getParameter(String strTextName) 获取表单提交的信息.
getProtocol() 获取客户使用的协议。
String strProtocol=request.getProtocol();
getServletPath() 获取客户提交信息的页面。String strServlet=request.getServletPath();
getMethod() 获取客户提交信息的方式 String strMethod=request.getMethod();
getHeader() 获取HTTP头文件中的accept,accept-encoding和Host的值,String strHeader=request.getHeader();
getRermoteAddr() 获取客户的IP地址。String strIP=request.getRemoteAddr();
getRemoteHost() 获取客户机的名称。String clientName=request.getRemoteHost();
getServerName() 获取服务器名称。 String serverName=request.getServerName();
getServerPort() 获取服务器的端口号。 intserverPort=request.getServerPort();
getParameterNames() 获取客户端提交的所有参数的名字。
(7)response(HttpServletResponse):即HttpServletResponse类的对象;
对客户端的请求,主要将jsp容器处理过 的对象传回客户端,它只在jsp页面有效。
常用方法:
setContentType(String s),改变contentType的属性值
response.sendRedirect(index.jsp);重定向
(8)application(ServletContext):即ServletContext类的对象;只要服务器一启动就会创建该对象,直到服务器关闭,所有客户的application对象都是同一个
常用方法:
setAttribute(String key,Object obj):将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key):获取Application对象中含有关键字的对象。
(9)session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
常用方法:
public String getId()h获取session对象的id
public void setAttribute(String key,Object obj)将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
public Object getAttribute(String key):获取Session对象中含有关键字的对象。
public Boolean isNew():判断是否是一个新的客户。
在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。