什么是JSP

JSP本质上就是一个Servlet,JSP主要负责与用户交互,将最终的界面呈现给用户,HTML+JS+CSS+Java的混合文件。

返回一个网页页面

在前面的Servlet中,我们想客户端返回的都是一个字符串,比如"hello world"

那么如何返回一个页面呢?

(1)创建一个简单的html页面

新建记事本,输入:

JSP function返回值 返回jsp页面_JSP function返回值


保存退出,修改后缀名为html

JSP function返回值 返回jsp页面_JSP function返回值_02


双击打开

JSP function返回值 返回jsp页面_JSP function返回值_03


一个简单的网页就创建好了

2.在Servlet中怎样返回这个页面呢?

(1)最笨的方法

将网页的源码一行一行的放在doGet()方法里

JSP function返回值 返回jsp页面_字符串_04


编译运行

JSP function返回值 返回jsp页面_Java_05


显示我们自定义的页面

这个方法虽然可以,但是很显然,太麻烦,非常麻烦,实际的开发中没人会这么做

这个时候就要使用JSP了

3.我们在前面说过,在IDEA中创建一个新的web项目时,会自动生成index.jsp文件

JSP function返回值 返回jsp页面_服务器_06


其中代码为;

JSP function返回值 返回jsp页面_服务器_07


当我们编译运行项目时,浏览器会自动打开,打开的默认界面就是index.jsp文件内定义的界面,

JSP function返回值 返回jsp页面_字符串_08


当我们在网页地址内输入我们自定义的地址是,这个页面才会加载我们的Servlet,比如前面的输出一个字符串或者一个页面

4.在web下新建一个jsp文件test.jsp

JSP function返回值 返回jsp页面_jsp_09


写入内容

JSP function返回值 返回jsp页面_Java_10


编译运行,在打开的页面地址内输入test.jsp,回车

JSP function返回值 返回jsp页面_JSP function返回值_11


当服务器接收到一个后缀是jsp的请求时,会将该请求交给JSP引擎去处理,每一个JSP页面第一次被访问的时候,JSP引擎会将其翻译成一个Servlet文件,再由Web容器调用Servlet完成响应。

标题

单纯从开发的角度来看,JSP就是在HTML中嵌入Java程序
具体的嵌入方式有三种:
1.JSP脚本–执行Java逻辑代码
在html文件中添加这样一行代码:

<% 
	Java代码 
%>

就可以了

在上面创建的test.jsp中添加Java代码

JSP function返回值 返回jsp页面_Java_12


编译运行,再打开的页面地址内访问test.jsp,回车

JSP function返回值 返回jsp页面_服务器_13


可以发现,在页面内只显示了h1之间的内容

而我们Java中的hello world并没有显示在页面,而是显示在IDEA的控制台上

JSP function返回值 返回jsp页面_字符串_14


这是什么原因造成的?

当我们在服务器上访问jsp文件时,遇到<% %>内的Java代码时,会首先复制这段Java代码,将其复制到继承HttpServlet类的Servlet类的doGet()方法内。

例如

JSP function返回值 返回jsp页面_JSP function返回值_15


可以看出,如果想将内容输出到浏览器页面上,就必须通过write方法,而我们的Java并没有write方法,仅有System.out.println,因此hello world只是被输出到本地的控制台中,并不会被显示到浏览器页面中

2.JSP声明 – 定义Java方法

<%!
	声明Java方法
	//只能在这里面定义方法,不能调用方法
	//调用方法只能在<%    %>内
%>

JSP function返回值 返回jsp页面_Java_16


3.JSP表达式 – 把Java对象直接输出显示在页面上

<%=java变量%>

JSP function返回值 返回jsp页面_JSP function返回值_17


编译运行项目,在浏览器打开的页面地址中访问test.jsp

JSP function返回值 返回jsp页面_Java_18


可以看到helloworld已经显示在页面上了