jsp技术

简介: 我是一名Java后台学习者,但是后台程序员也需要掌握一定的前端技术。虽然说现在前端基本上是react、vue、angular三分天下,但是作为一名Java程序员,如果说不会jsp,那未免有点说不过去。接下来就了解一下jsp技术。

一、简介:


jsp是一种动态网页技术,全称是java server pages,常见的动态网页技术还有asp和php。jsp可以近似的理解为java+html,但是jsp的实质就是servlet,也就是java类。我们知道在servlet中可以通过out.write("<h1>hello</h1>")来写页面,但是每次都要out.write(),太麻烦了,结构也不清晰,难以维护。而jsp就弥补了这些缺点,可以直接在jsp文件中使用html的标签,运行时通过jsp引擎把jsp转译成了servlet。


二、hello world:


新建一个web项目,然后new jsp file:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>hello jsp</h1>
</body>
</html>


把项目部署到tomcat服务器上,然后运行。在浏览器中访问:


image.png

刚说了jsp本质就是servlet,运行之后在tomcat的work\Catalina\localhost\ROOT\org\apache\jsp目录下就会有index.jsp对应的Java文件和编译后的class文件。


image.png

三、jsp语法:


JSP语法分为三种类型:


1、编译器指令:


include:用来导入文件的,分静态导入和动态导入。


              静态导入:<%@include file="include.jsp"%>

 

比如在index.jsp中用上面的代码导入include.jsp,这是源码级的导入,jsp引擎转译后,只会生成一个.java文件,也就是说include.jsp转译后的java代码是在index.java中,并不会生成include.java,也就是两个类合并成一个类。


              动态导入:<jsp:include page="include.jsp"/>

   

动态导入与静态导入不同,jsp引擎转译后会生成两个类,在index.jsp中导入include.jsp,就相当于是在index.java中调用include.java类。


              注意:静态导入因为转译后源码都在同一个java文件中,所以可以在index.jsp中直接调用include.jsp中定义的内容,而动态导入则不能。


page:<%@ page contentType="text/html;charset=UTF-8"

language="java"%>在转译后的servlet中其实就是

response.setContentType("text/html; charset=UTF-8");。当然page指令的属性还有好多,像import、errorPage等,相信通过这个例子大家就可以体会到page指令在转译后的servlet中对应的是什么。


taglib:用来引入标签库


2、脚本语法:


注释:<%-- ... -->


声明:<%! ... %>

<%!
    int aa = 4;
%>


这就是声明,转译后就是java类的成员变量。所以声明就是用来定义类的成员变量和成员方法的,用得并不多。


表达式:<% =... %>

<%
    int dd = 3;
%>
<%=dd%>


那么在页面会直接输出3,在转译后的java文件中就是out.print(dd);


java脚本段:<% ... %>

<%
    int dd = 3;
%>


也就是在<% %>之间就可以写java代码。


3、动作语法:


<jsp:forward>:


用来做转发的,看下面的例子:


index.jsp:

<jsp:forward page="hello.jsp">
    <jsp:param name="a" value="hello"/>
</jsp:forward>


hello.jsp:

<%
    out.print(request.getParameter("a"));
%>


访问index.jsp页面,就会转发到hello.jsp,在页面中就会输出hello。


image.png

注意:写在forward标签之后的代码不会再执行。


<jsp:include>就是动态导入,上面说过了,另外<jsp:plugin>,<jsp:getProperty>,<jsp:setProperty>和<jsp:useBean>都用得不多。


四、九大内置对象:


所谓内置对象,就是jsp已经给我们提供了的对象。因为jsp转译后就是servlet,而servlet中是已经定义了一些对象的。jsp有9大内置对象,接下来就看看这九大内置对象。


1、request:


就是HttpServletRequest的对象,代表来自客户端的请求,关于它的方法用得较多的是getParameter、getParameterNames、getAttribute、setAttribute等方法。


2、response:


就是HttpServletResponse的对象,代表客户端的响应,也就是可以通过response对象来组织发送到客户端的数据。


3、out:


像客户端输出内容的对象。


4、session:


表示客户端与服务器的一次会话,用户浏览某个网站时从进入到关闭所经过的时间session实际上是一个特定的时间概念。在服务器中一个用户对应一个session。当一个用户访问一个服务器时,可能会在不同页面之间切换,服务器应当通过某种方法知道这是同一个对象,这就用到了session。


5、application:


实现用户间的数据共享,可存放全局变量。开始于服务器的启动,终止于服务器的关闭。常用方法是setAttribute和getAttribute。


6、pageContext:


页面上下文对象,封装了当前jsp页面的运行信息。也就是说,如果需要当前页面的信息传到其他页面,只需要传pageContext即可,通过pageContext就可以获得request、session等九个对象的信息。


7、config:


提供一些配置信息,一般用不到。


8、page:


代表正在运行的由jsp文件产生的类对象,一般不建议使用。


9、exception:


代表了jsp文件运行时产生的异常对象,也用得很少。


总结:


本文简单的介绍了jsp基础语法以及九大内置对象,特别注意如果开发工具用的是idea,那么需要添加servlet-api和jsp-api两个jar包,否则可能导致内置对象的某些方法无法调用。jsp的本质是servlet,所以学习的时候应该先学servlet,再来学jsp就好理解了




相关文章
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
262 0
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
181 3
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
302 12
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
259 9
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
182 7
|
存储 设计模式 搜索推荐
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
118 1
|
存储 安全 Java
Java的servlet和jsp技术
Java的servlet和jsp技术
183 11
|
XML 前端开发 Java
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
120 0
|
安全 Java 关系型数据库
基于JSP技术的个人网站系统
基于JSP技术的个人网站系统
|
安全 Java 关系型数据库
基于JSP技术的定西扶贫惠农推介系统
基于JSP技术的定西扶贫惠农推介系统