您的位置:首页 > Web前端 > JavaScript

JSP规范、Servlet关系、基础

2018-04-01 17:10 477 查看

博客目录

1、什么是JSP

2、JSP与Servlet的关系

3、JSP规范

4、JSP注释、代码块、声明语句块、表达式块

5、JSP基础总结

一、什么是JSP

JSP全称:Java Server Pages

JSP是在传统静态网页HTML中插入Java代码片段和JSP标签的一直文件,后缀为.jsp

因为Java是跨平台的,所以JSP也是跨平台

二、JSP与Servlet的关系

JSP文件的本质是Servlet,只不过JSP与Servlet不同的是,JSP是专门用于进行数据展示的Servlet,其有特殊的写法。而普通的Servlet是用于完成业务逻辑处理的。由于Servlet是运行在单例多线程环境下的,所以JSP同样也是运行在单例多线程环境下

三、JSP规范

将JSP页面翻译为Servlet的过程,是由Tomcat完成的。在Tomcat内置了一个JSP翻译引擎,当第一次访问该JSP页面时,翻译引擎会将JSP页面翻译为Servlet,例如JSP页面中的HTML,CSS,JavaScript,及普通文本均被翻译到out.write中(例如下图就是JSP编译后的Servlet),Tomcat中的JSP翻译引擎,就遵循了这个JSP规范





如何找到JSP编译成Java后的文件

在Tomcat目录下

work>Catalina>localhost>项目名称>org>apache>jsp>.java文件

四、JSP注释、代码块、声明语句块、表达式块

1、JSP注释<%– –%>

翻译引擎会将HTML注释翻译到Service方法中的out.write()中,而JSP注释会被忽略成一个\t

在客户浏览器查看源码时,HTML注释是可以查看到的,但JSP注释是无法查看的,所以如果是很重要的注释可以写成JSP注释

图1是JSP注释和HTML注释的区别

图2是HTML注释被翻译到了Service方法中,而JSP注释被忽略成一个\t

图1



图2



2、JSP代码块<% %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<!-- JSP代码块 -->
<%
String name="linjie";
%>
<%
System.out.println(name);
System.out.println("这是Java代码块");
%>

</body>
</html>


可以写在任意位置

每个<% %>都是联系的,因为都翻译到一个Service中

<% %>中声明变量不能加权限访问控制符,因为<% %>会被翻译到Service方法中,而方法中的变量不能用权限访问控制符

<% %>中不能定义方法,因为被翻译到Service方法中又有方法,在Java中不允许方法的嵌套

<% %>中不能定义静态语句块:static{},方法中不能有静态代码块,静态代码块应该在类中

3、JSP声明语句块<%! %>

<%@ page language="java" contentType="text/html;
c5c8
charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<!--JSP声明语句块 -->
<%!
public void show()
{
System.out.println("Java声明语句块");
}
%>
<%
show();
%>

</body>
</html>


JSP声明语句块被翻译的位置改变了:翻译到了类中,成为了成员变量、成员方法,可以修改(但会造成线程安全问题,因为Servlet是单例多线程的,如果有可修改的成员变量,则会引起线程安全问题,所以一般Servlet不加成员变量)

4、JSP表达式块<%= %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name="linjie";
%>

<!-- JSP表达式块 -->
<%=name %>
</body>
</html>


会在浏览器显示name的值

被翻译到Service中out.print(name);



五、总结

1、JSP代码块

<% %>

不能写方法、访问控制符、静态语句块

翻译到Service方法中

2、JSP声明语句块

<%! %>

能写方法、访问控制符、静态语句块

翻译到类中

但由于Servlet是单例多线程,其中如果加了可修改成员变量会引起线程安全问题

3、JSP表达式块

<%= %>

没有分号

<%=name %>:即在浏览器中显示name的值

被翻译到Service方法中:out.print(name);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: