文章目录
JSP的学习
需要学习的已经罗列的如下:
1.三大指令的学习
指令语法:<%@ 指令名 属性名=值%>
1.page:配置jsp页面的相关属性
-
contentType=“text/html;charset=UTF-8” 响应编码
-
language=“java” 支持的语言(jsp起初想支持多种语言)
-
pageEncoding=“utf-8” 页面的编码
-
imput=包名 java中的导包
-
buffer=“8kb” java中设置缓冲区的大小
-
autoflush=“true” 是否自动刷新
-
errorPage=“index.jsp” 当本页面出现错误时,为保证用户体验,让用户跳转到指定的错误的显示页面(找不到喽)
-
isErrorPage=“true” 这个意思是本页面为错误页面,只有标注了这个属性才可以使用页面内的内置对象exception对象
报了5系列错误的页面的jsp:<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" errorPage="errorpage.jsp" %> <html> <head> <title>$Title$</title> </head> <body> <%--设置异常--%> <%System.out.println(1/0);%> </body> </html>
提示页面的jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %> <html> <head> <title>Title</title> </head> <body> 喔喔怎么找不到了 <%=exception%> </body> </html>
统一配置错误页面(当编写的jsp页面出现问题时都会跳转到友好提示页面)
在web.xml中配置:
<error-page>
<!--当jsp页面出现500错误时,都跳转到errorpage这个页面-->
<error-code>500</error-code>
<location>/errorpage.jsp</location>
</error-page>
配置之后,就不需要在jsp页面下设置page属性
2.include:静态包含
静态:当jsp编译成java类后使用的静态的方法
在页面设计时,如果多个页面的头部和底部的模式是相同的,那么只需要换中间的内容,就可以使用这个页面属性:
头部和底部内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>头部内容</h1>
<%--使用指令--%>
<%@include file="include.jsp"%>
<h1>底部内容</h1>
</body>
</html>
中间内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>中间内容</h1>
</body>
</html>
结果:
头部内容
中间内容
底部内容
3.taglib导入第三方的标签库(经常使用的c标签)
这种导入标签的存在是为了简化脚本
2.六个动作标签(常用)
动作标签的出现是为了替代jsp的脚本
1.jsp:bean、jsp:getProperty、jsp:setProperty
创建对象,并对对象进行的设置和提取操作
代码展示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.g.Demo.User" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--jsp原始脚本--%>
<%
User user = new User("zhangsan", "123456");
String password = user.getPassword();
String username = user.getUsername();
out.write(username);
out.write(password);
%>
<hr>
<%--使用jsp内置对象--%>
<jsp:useBean id="u" class="com.g.Demo.User"></jsp:useBean>
<jsp:setProperty name="u" property="username" value="lisi"></jsp:setProperty>
<jsp:setProperty name="u" property="password" value="123456"></jsp:setProperty>
<jsp:getProperty name="u" property="username"></jsp:getProperty>
<jsp:getProperty name="u" property="password"></jsp:getProperty>
</body>
</html>
结果:
zhangsan123456
lisi 123456
2.jsp:include 动态包含
<jsp:include page="include.jsp"></jsp:include>
与page指令中的区别:生成的java类中的变量不同,非静态
3.jsp:forward 和 jsp:parm内部转发标签
<%--原始jsp脚本--%>
<%
//request.getRequestDispatcher("/WEB-INF/home.jsp").forward(request,response);
%>
<%--jsp内置对象--%>
<jsp:forward page="WEB-INF/home.jsp"></jsp:forward>
注意:获取web-inf目录下的文件,不可以重定向,只能内部转发,并且在使用jsp的内部对象时,路径的填写需要注意WEB-INF前面的斜杠不需要写
在转发的过程中的传递参数,例如请求服务器上的servlet并且在servlet获取转发带过来的值
jsp页面:
<%--jsp内置对象跳转请求servlet并存放参数--%>
<jsp:forward page="/jspdemo">
<jsp:param name="username" value="zhangsan"></jsp:param>
<jsp:param name="password" value="123456"></jsp:param>
</jsp:forward>
服务器的servlet:
@WebServlet(name = "jspServlet",value = "/jspdemo")
public class jspServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username+" "+password);
response.getWriter().write(username+" "+password);
}
3.九个jsp的内置对象
原理:当jsp页面转换成servlet类时,服务器已经将9个对象初始化好了,传给了Service方法,调用直接使用。
1.四个域对象
域的名称 | 范围 | jsp页面上的表示 |
---|---|---|
servletcontext 全局域对象 | 代表整个web的项目 | application对象 |
session域 | 浏览器服务器之间的一次会话 | session对象 |
request域 | 代表范围内的一次请求和响应 | request对象 |
pagecontext页面域 | 在页面中的一次操作 | pagecontext对象 |
2.config 配置对象
3.page页面对象>>this
4.out输出对象
5.reponse响应对象
6.exception对象(前提page iserrorpage=“true”)
注意:pagecontext页面域可以取出其他的8个对象