JavaWeb之 JSP基础

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

javaWeb之 jsp基础什么是JSPJSP的全称是javaserverpage,java服务页面。是提供java服务的页面~

那么和Servlet有什么区别呢?JSP的页面既可以写java代码~也可以写html代码哦!!

JSP的特点JSP的作用:JSP是主要用来开发动态资源的技术~

那么JSP怎么运行呢?我这里交给Tomcat服务器运行了~

Jsp运行的目录

%tomcat%/work是tomcat服务器运行jsp页面的临时目录。

那么我们来看看JSP的原理,JSP是怎么运行的~

我们用浏览器输入:http://localhost:8080/day12/01.hello.jsp

第一次访问时: 找到文件-翻译-编译-构造实例-调用方法

1)在day12web应用下找到01.hello.jsp文件

2)tomcat服务器将01.hello.jsp文件翻译成java源文件。例如01.hello_jsp.java

3)tomcat服务器将java源码编译成class字节码,例如01.hello_jsp.class

4)tomcat服务器构造01.hello_jsp类的实例,调用类中的方法。

第n次访问时: 已经存在了jsp文件对应的class对象的一个实例,直接用该实例调用方法

tomcat服务器不再翻译和编译jsp文件

注意:jsp文件被修改,或jsp临时文件被删除,服务器都会重新翻译和编译jsp文件。

1)当修改了jsp文件时的第一次访问,重新再翻译和编译jsp文件。

2)当删除%tomcat%/work的jsp临时文件的第一次访问,重新再翻译和编译jsp文件。

Jsp的原理问题:Jsp文件翻译成的java源文件是什么类??

publicfinalclass hello extends HttpJspBase

publicabstractclassorg.apache.jasper.runtime.HttpJspBaseextends HttpServletimplements HttpJspPage{

继承自HttpServlet!!!

结论:Jsp就是一个servlet!!

注意

1)Jsp文件的html代码,通过out.writer()方法写出到浏览器。

2)Jsp文件的java代码,直接拷贝到java源文件中,通过_jspService()方法执行。

那么我们下面来体验一下JSP吧~

jsp的体验需求:用jsp向浏览器输出当前时间。下面是核心代码:

<body> <h1><font color='red'>欢迎来到此页面</font></h1> <% SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = simaple.format(new Date()); request.setAttribute("aa", "123"); %> 当前的时间是:<%=date %> <% String ip = request.getRemoteAddr(); out.write(ip); %> </body>

然后用浏览器直接访问这个jsp,就能看到以下的效果了~

体验完JSP,是不是很自己写一个体验一下呢?下面我们就来学习JSP的语法吧!

JSP的语法Jsp模板Jsp模块:就是jsp页面中的html代码

Jsp表达式 例如:<%=x%>表达式<%=x*y+k-n%>

这样写的表达式,翻译后实质上是用过out.PRint()来输出。

格式:<%=变量或表达式计算%>

作用:用于向浏览器输出变量的值或表达式计算的结果

注意:

1)表达式的原理就是通过out.print()方法向浏览器输出内容。

2)表达式后面不能带分号。

Jsp脚本 也就是html中的java代码格式:<%java代码%>

作用:执行java代码

注意:

1)可以写多行java代码

2)原理是把脚本代码原封不动拷贝到_jspService方法中执行。

3)jsp脚本可以穿插html代码结合使用

Jsp声明声明里面的 变量和方法是成员变量和成员方法格式:<%!%>

作用:声明jsp的变量和方法

注意:

1)Jsp脚本声明的变量是局部变量,Jsp声明的变量是成员变量。

2)Jsp脚本中不能声明方法的,Jsp声明的方法是成员方法。

3)jsp声明的方法不能和翻译成的java类的方法重复。

Jsp注释jsp注释只会出现在jsp文件中,不会被翻译到java文件里。格式:<%--jsp注释--%>

注意:

html的注释会翻译到java源代码中,会被执行的。

jsp的注释不会翻译到java源代码中,不会被执行的。

看完前面的介绍那么久写一段代码来体现下吧~

<body> <%--模板 --%> <h1><font color='red'>欢迎来到此页面</font></h1> <%--脚本 --%>> <% SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = simaple.format(new Date()); request.setAttribute("aa", "123"); %> <%--表达式 --%>> 当前的时间是:<%=date %> <% String ip = request.getRemoteAddr(); out.write(ip); out.write(s); %> <%--声明--%> <%! String s = "hello"; %> </body>

然后看看输出的结果把~:

上述就是JSP的基本语法,除了基本语法,我们还需要学习JSP的三大指令。

Jsp三大指令

一)taglib指令(这个我们以后再说)主要用于导入jsp标签库

二)include指令

include指令----》把其它页面一并翻译到java文件里,这个页面不需要具备html,body,head标签,因为它会被翻译到jsp文件对应的html的body内

作用:主要用于包含其他页面

格式:<%@inculdefile="被包含的页面"%>

注意:

1)include指令原理:包含与被包含的页面内容先合并翻译到一个java文件中,再编译运行。(先合并再翻译),这种包含叫静态包含。(源码包含)

2)如果使用include指令包含,那么被包含的页面不需要使用全局的html标签(例如,html,body,head)

page指令作用:主要用于告诉服务器如何翻译jsp文件,主要有下面几种设置:

<%@ page language="java" --告诉服务器用什么语言翻译此jsp页面 import="java.util.*" --导包,在jsp页面编写java需要手动导包。除了java.lang包以为都需要导入。多个包之间用逗号分隔

buffer="8kb"--jsp页面缓冲区大小

session="true"--是否开启session功能

isELIgnored="false"--是否忽略EL表达式

关于jsp文件的编码: pageEncoding="utf-8" --告诉服务器用什么编码翻译此jsp文件 contentType="text/html; charset=utf-8" --服务器发送给浏览器数据的编码注意:1)contentType属性的编码看pageEncoding编码2)在开发工具中,保存jsp文件的编码自动根据pageEncoding的编码改变。结论:1)在开发工具中,jsp文件的编码问题只需要设置pageEncoding即可!2)如果用记事本开发jsp文件,要注意保存jsp文件的编码。 异常相关的: errorPage="" -指定错误处理页面,当页面出现错就会转跳到错误页面。 isErrorPage="" --指定当前页面是否是错误处理页面。true:是,那么可以使用exception的内置对象,使用它的一些方法。false:不是。不可以使用exception对象。 全局异常处理:在web.xml中加上配置

<!-- 配置全局异常 --> <error-page> <error-code>500</error-code> <location>/common/500.jsp</location> 505错误都会转跳到这个页面 </error-page> <error-page> <error-code>404</error-code> <location>/common/404.html</location> 404错误都会转跳到这个页面 </error-page>

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航