重学JavaWeb(17)JSP

1. JSP入门

1. 概念:Java Server Pages:Java服务器端页面,可以理解为一个特殊的页面,其中既可以定义html标签,又可以定义java代码,为了简化书写
2. 原理:本质上就是一个Servlet
在这里插入图片描述

3. 脚本:JSP定义Java代码的方式

1. <% 代码 %>:定义的java代码,在service方法中,service方法可以定义什么,该脚本中就可以定义什么
2. <%! 代码 %>:定义的java代码,在JSP转换后的java类的成员位置(不推荐使用,容易引发线程安全问题)
3. <%= 代码 %>:定义的java代码,会输出到页面上,输出语句中可以定义什么,该脚本中就可以定义什么(也是在service方法里面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <%--1. <% 代码 %>:定义的java代码,在service方法中,service方法可以定义什么,该脚本中就可以定义什么--%>
    <%
      System.out.println("hello jsp!");
      int i = 5;
    %>
    <%--2. <%! 代码 %>:定义的java代码,在JSP转换后的java类的成员位置(不推荐使用,容易引发线程安全问题)--%>
    <%!
      int i = 3;
    %>
    <%--3. <%= 代码 %>:定义的java代码,会输出到页面上,输出语句中可以定义什么,该脚本中就可以定义什么(也是在service方法里面)--%>
  <%=
    "hi~jsp"
  %>
    
  <%--输出的是5,因为都在service方法中,就近原则--%>
  <%= i %>   
  </body>
</html>

2. JSP

1. 注释
(1)标记语言注释

1. 格式:<!-- -->
2. 缺点
	1. 会送发到客户端
	2. 不能注释java代码

(2)JSP注释(推荐使用)

1. 格式:<%-- --%>
2. 优点
	1. 不会发送到客户端
	2. 能注释java代码

2. 三大指令
(1)指令:配置JSP页面的属性或者导入一些额外的内容
(2)格式:<%@ 指令名称 属性名="属性值"%>
(3)分类

1. page:配置JSP页面属性
2. include:静态包含,导入页面的资源文件
3. taglib:导入jar包等资源

(4)page指令

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
1. contentType:相应的文本类型是html,让浏览器使用utf-8解码
2. language:指定JSP使用的语言。只有java
3. <%@ page import="java.io.PrintWriter" %>:import:导入包
4. errorPage:JSP配置错误的页面,当页面发生异常时,跳转到指定的页面
	1. 【注】一般在开发完成后,会在web.xml中配置整个项目的错误页面
		<error-page>
  					<error-code>500</error-code>
  					<location>/500.jsp</location>
  		</error-page>
5. isErrorPage:是否是错误页面
	1. true:是错误页面,可以使用内置对象exception
	2. false:不是错误页面 
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/500.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        int i = 1/0;
    %>
</body>
</html>

=======================================================================================

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        exception.printStackTrace();
    %>
    <h1>服务器正忙,请您稍后访问</h1>
</body>
</html>

(5)include指令

1. 作用:页面包含,导入页面的资源文件
2.【注意】包含后,只会存在一个.class文件 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%@include file="index.jsp"%>  <%-- 包含index.jsp页面的部分 --%>
    <h1>demo02页面的部分</h1>
</body>
</html>

(6)taglib指令

1. 作用:导入资源
2. 示例: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3. 6个动作标签
(1)动作标签:替换java代码,简化书写,提高可读性
(2)<jsp:useBean>:使用一个id和一个给定作用范围和同一个id的JavaBean相关联
(3)<jsp:setProperty>:设置JavaBean的属性值
(4)<jsp:getProperty>:获取JavaBean的属性值

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        People people = new People();
        people.setName("张三");
        people.setAge(13);
        String name = people.getName();
        int age = people.getAge();
        out.write(name);
        out.write(age + "");
    %>
    
    <jsp:useBean id="p" class="demo.People">
        <jsp:setProperty name="p" property="name" value="李四"></jsp:setProperty>
        <jsp:setProperty name="p" property="age" value="14"></jsp:setProperty>
        <jsp:getProperty name="p" property="name"></jsp:getProperty>
        <jsp:getProperty name="p" property="age"></jsp:getProperty>
    </jsp:useBean>
</body>
</html>

(5)<jsp:include>:动态包含,可以把一个公共页面引进来

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%@include file="index.jsp"%>
    <jsp:include page="index.jsp"></jsp:include>
</body>
</html>

(6)<jsp:forword>:请求转发,接受用户输入并将请求分派给另一页面
(7)<jsp:params>:传递请求参数

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:forward page="index.jsp">
        <jsp:param name="msg" value="hello!"></jsp:param>
    </jsp:forward>
</body>
</html>

4. JavaBean
(1)概念:一种符合特点规范的Java类
(2)规范

1. 私有所有成员变量
2. 提供公共的getter,setter方法
3. 提供空参构造 

(3)包的写法

1. domain
2. pojo
3. beans 

5. 9个内置对象
(1)在JSP页面中不需要创建,直接使用的对象
(2)分类

	变量名			原始类型			 		作用
	pageContext		pageContext		 		当前页面共享数据,还可以获取其他8个内置对象
	request			HttpServletRequest		一次请求访问的多个资源(转发)
	session			HttPSession				一次会话的多个请求间
	application		ServletContext			所有用户共享数据
	response		HttpServletResponse		响应对象
	page			this					当前页面对象
	out				JspWriter				数据输入到页面上
	config			ServletContext			Servlet的配置对象
	exception		Throwable				异常对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值