JSP概述

现有问题

在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处?

  • 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注解

  • 代码修改麻烦:重新编译、部署、重启服务

  • 显示方式麻烦:获取流、使用println("");逐行打印

  • 协同开发麻烦:UI负责美化页面,程序员负责编写代码。UI不懂Java,程序员又不能将所有前端页面的内容通过流输出

JSP(Java Server Pages)

1.  概念:简化的Servlet设计,在Html标签中嵌套Java代码,用于高效开发Web应用的动态网页

2 . 作用:替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)

3 . 创建JSP:在web目录下新建*.jsp文件,(与WEB-INF平级)

4 . JSP编写Java代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>This is my first page</title>
</head>
<body>
    <%=new java.util.Date() %>
</body>
</html>

5 . 访问Jsp

在浏览器输入http://ip:port/项目路径/资源名称

6 . JSP与Servlet

  • 关系

    • JSP文件在容器中会转换成Servlet执行。

    • JSP是对Servlet的一种高级封装。本质还是Servlet。

  • 区别

    • 与 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

7.JSP 实现原理

Tomcat会将xxx.jsp转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端。

 8.Jsp.java源文件存放目录

使用IDEA开发工具,Tomcat编译后的JSP文件(Xxx_jsp.class 和 Xxx_jsp.java)的存放地点:

  • C:\用户\账户名\.IntelliJIdea2019.1\system\tomcat\项目名称\work\Catalina\localhost\应用上下文\org\apache\jsp

9 . JSP与HTML集成开发

9.1 脚本:脚本可以编写Java语句、变量、方法或表达式。

9.2普通脚本:语法:<%java代码%>

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>  
<%  
	//jsp中,使用小脚本嵌入java代码!  
	out.println("hi");//打印内容在客户端页面
    System.out.println("hi");//打印内容在控制台
%>
</body>
</html>

经验:普通脚本可以使用所有Java语法,除了定义函数。

注意:脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套

9.3 声明脚本:语法:<%! 定义变量、函数 %>

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Object object = new Object(); %> 
<%!
  //定义方法
  public void m1(){
 	 System.out.println("你好");
}
%>

9.4 :输出脚本  语法<%=java表达式>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基本使用</title>
</head>
<body>
<p>
   今天的日期是: <%= new java.util.Date() %>
</p>
</body> 
</html> 

10.JSP注释:JSP注释主要有两个作用:为脚本代码做注释以及HTML内容注释。

语法规则

语法描述
<%-- 注释 --%>JSP注释,注释内容不会被发送至浏览器甚至不会被编译
< !--注释-- >HTML注释,通过浏览器查看网页源代码时可以看见注释内容
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基础教程</title>
</head>
<body>
<%-- JSP注释在网页中不会被显示--%> 
<!-- HTML注释在网页源代码中会显示 -->
<p>
   今天的日期是: <%= new java.util.Date() %>
</p>
</body> 
</html> 

 11.JSP指令:JSP指令用来设置与整个JSP页面相关的属性

page指令

  • 语法:<%@ page attribute1="value1" attribute2="value2" %>

  • Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

属性描述
errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面
import导入要使用的Java类
contentType指定当前JSP页面的MIME类型和字符编码格式
language定义JSP页面所用的脚本语言,默认是Java
session指定JSP页面是否使用session。默认为true立即创建,false为使用时创建
pageEncoding指定JSP页面的解码格式

 

 

 

 

include指令

  • 语法:<%@ include file = "被包含的JSP路径"%>

  • 通过include指令来包含其他文件。

  • 被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。

<%@ include file="header.jsp"%>
...
...
<%@ include file="footer.jsp" %>

 

上图输出张三

 

setProperty

可以在jsp:useBean元素之后使用jsp:setProperty进行属性的赋值

属性描述
namename属性是必需的。它表示要设置属性的是哪个Bean。
propertyproperty属性是必需的。它表示要设置哪个属性。
valuevalue 属性是可选的。该属性用来指定Bean属性的值。
<jsp:useBean id="user" class="com.qf.entity.User" />
​
<jsp:setProperty name="user" property="name" value="gavin" />

4.4.4 getProperty

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。

属性描述
name要检索的Bean属性名称。Bean必须已定义。
property表示要提取Bean属性的值
<jsp:useBean id="user" class="com.qf.entity.User" />
​
<jsp:setProperty name="user" property="name" value="gavin" />
​
<jsp:getProperty name="user" property="name" />

 

 

forward

  • 语法:<jsp:forward page="相对 URL 地址" />

  • jsp:forward动作把请求转到另外的页面。

属性描述
pagepage属性包含的是一个相对URL。
<jsp:forward page="index.jsp" />

 

 

 

 

 

 

4.4.6 param

  • 语法:<jsp:param name="" value=""/>

  • 在转发动作内部使用,做参数传递

<jsp:forward page="index.jsp">
         <!-- http请求参数传递-->
         <jsp:param name="sex" value="nan" />
</jsp:forward>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值