JS和JSP的区别

最近很多同学在纠结于名词缩写之间的相似性,因此本人也来写一篇,讲讲JS和JSP的区别。


SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。


JSP全名为Java Server Pages,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。


JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。


jsp 要先翻译,注意是翻译成servlet才能执行:
比如 test.jsp 要变成 test_jsp.java 然后编译成 test_jsp.class
而 test_jsp.java 本身就是一个servlet.
所以 jsp只是servlet的一个变种,方便书写html内容才出现的。
servlet是根本,所有jsp能做的,servlet全能做。

servlet的运行机制和Applet类似,只不过它运行在服务器端。一个servlet是javax.servlet包中HttpServlet类的子类,由支持servlet的服务器完成该子类的对象,即servlet的初始化。

扩展阅读0:jsp转化为servlet的过程:

http://www.w3cschool.cc/jsp/jsp-architecture.html

扩展阅读1:servlet版的Helloworld(需要装tomcat,我通常使用XAMPP集成的tomcat)

http://blog.163.com/adoom_2010/blog/static/1820326362011710102719527/

扩展阅读2:servlet程序中的各部分的作用、调用顺序

http://wenku.baidu.com/link?url=U2B6Gx_C1X702ppIFJdXR23MyY85lZzJeneIDZSFCuA3bZ-ynwDFx9oYm4pNcpa4ZjmlUPnkrtwkHg0skxdo3mqOY-IAvXzzYqaCOc7DVmW


JS是Java Script 的缩写,是一种基于对象的客户端脚本语言。主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。JS可以直接嵌入到html代码中进行解析执行,非常简单易学,可以产生很多动态的效果。

扩展阅读:http://www.w3school.com.cn/js/


简单地说——JS是在客户端执行的,需要浏览器支持Javascript。JSP是在服务器端执行的,需要服务器上部署支持Servlet的服务器程序。JS代码是能够直接从服务器上download得到,对外是可见的,jsp(和翻译后的servlet)代码是对外不可见的。

  • JS与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。JSP在HTML中用<%%>里面实现。JS在html中用<Script></Script>实现
<think>我们被要求解释JSJSP区别,并且按照指定格式回答。 回答结构:先回答问题,给出解释,然后提出相关问题。 注意:最后的相关问题要严格遵循格式(四个问题,使用§§分隔) 分析: JavaScript (JS) JavaServer Pages (JSP) 是两种完全不同的技术,分别用于客户端服务器端。 详细区别: 1. **定义与用途**: - **JavaScript**:一种客户端脚本语言,运行在用户的浏览器中,用于增强用户界面的交互性、动态更新内容等。 - **JSP**:一种服务器端技术,用于创建动态生成的网页(通常是HTML),在服务器上执行,生成HTML后发送到客户端。 2. **执行位置**: - JS:在客户端(浏览器)执行。 - JSP:在服务器端(如Tomcat、Jetty等Java EE容器)执行。 3. **技术类型**: - JS:一种脚本语言,遵循ECMAScript标准。 - JSP:是Java EE技术的一部分,本质上是Servlet的扩展(JSP文件会被编译成Servlet)。 4. **功能**: - JS:操作DOM、处理用户事件、发送异步请求(AJAX)、客户端验证等。 - JSP:生成动态内容、访问数据库、执行业务逻辑、处理HTTP请求生成响应。 5. **语法**: - JS:语法类似于Java,但更轻量,解释执行(现在通常有JIT编译)。 - JSP:在HTML中嵌入Java代码(使用<% ... %>等标签)。 6. **文件扩展名**: - JS:.js - JSP:.jsp 7. **生命周期**: - JS:随网页加载而加载,由浏览器引擎执行。 - JSP:当请求到达服务器时,容器将JSP编译成Servlet(如果尚未编译),然后Servlet处理请求并生成响应。 8. **交互方式**: - JS:可以通过AJAX与服务器通信(如Fetch API、XMLHttpRequest)。 - JSP:可以包含JS代码,生成供JS使用的动态数据。 示例代码对比: **JavaScript示例** (在浏览器中运行): 实现点击按钮改变文本内容。 ```html <!DOCTYPE html> <html> <head> <title>JS Example</title> <script> function changeText() { document.getElementById("demo").innerHTML = "Hello JavaScript!"; } </script> </head> <body> <p id="demo">原始文本</p> <button type="button" onclick="changeText()">点击我</button> </body> </html> ``` **JSP示例** (在服务器端运行): 根据服务器时间动态生成问候语。 ```jsp <%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" %> <html> <head> <title>JSP Example</title> </head> <body> <h1>欢迎访问!</h1> <p>当前时间:<%= new Date() %></p> <% int hour = new Date().getHours(); if (hour < 12) { %> <p>早上好!</p> <% } else { %> <p>下午好!</p> <% } %> </body> </html> ``` 总结: - JS运行在浏览器,用于客户端交互。 - JSP运行在服务器,生成动态网页。 注意:虽然JSP可以包含JS代码,但它们是不同的技术层。 现在,按照格式提出相关问题: </think>### JavaScript (JS) JSP区别详解 #### 本质区别 1. **语言类型**: - **JS**:客户端脚本语言(运行在浏览器) - **JSP**:服务器端技术(运行在Web服务器) 2. **执行时机**: - **JS**:在客户端浏览器中执行 - **JSP**:在服务器端执行,生成HTML后再发送到客户端 --- #### 技术核心对比 | 特性 | JavaScript (JS) | JSP (JavaServer Pages) | |------|----------------|------------------------| | **定位** | 浏览器脚本语言 | Java Web动态页面技术 | | **依赖环境** | 浏览器引擎(V8/SpiderMonkey) | Java Servlet容器(Tomcat/JBoss) | | **文件扩展名** | `.js` | `.jsp` | | **语法基础** | ECMAScript规范 | Java语言 + HTML模板 | | **数据处理** | 操作DOM/BOM | 连接数据库/业务逻辑 | | **调试位置** | 浏览器开发者工具 | 服务器日志/IDE调试器 | | **典型用途** | 表单验证/动态效果 | 用户认证/数据报表生成 | --- #### 执行流程对比 **JS 执行流程**: ```mermaid graph LR A[浏览器加载HTML] --> B[下载JS文件] B --> C[解析执行JS] C --> D[操作DOM] D --> E[用户交互响应] ``` **JSP 执行流程**: ```mermaid graph LR F[浏览器请求JSP] --> G[Web服务器接收] G --> H[JSP转译成Servlet] H --> I[Servlet编译执行] I --> J[生成纯HTML] J --> K[发送HTML到浏览器] ``` --- #### 代码示例对比 **JavaScript 示例**(客户端计算): ```javascript // 在浏览器中执行的加法计算 function addNumbers() { const num1 = parseFloat(document.getElementById("num1").value); const num2 = parseFloat(document.getElementById("num2").value); if(isNaN(num1) || isNaN(num2)) { alert("请输入有效数字!"); return; } document.getElementById("result").innerText = `结果: ${num1 + num2}`; } ``` **JSP 示例**(服务器端计算): ```jsp <%@ page contentType="text/html;charset=UTF-8" %> <% // 服务器端处理计算 double result = 0; String num1Param = request.getParameter("num1"); String num2Param = request.getParameter("num2"); if(num1Param != null && num2Param != null) { try { double num1 = Double.parseDouble(num1Param); double num2 = Double.parseDouble(num2Param); result = num1 + num2; } catch(NumberFormatException e) { out.print("<script>alert('输入无效数字')</script>"); } } %> <html> <body> <form method="post"> <input type="text" name="num1"> <input type="text" name="num2"> <button>计算</button> </form> <% if(result != 0) { %> <p>服务器计算结果: <%= result %></p> <% } %> </body> </html> ``` --- #### 关键区别点解析 1. **安全模型**: - JS:受浏览器沙盒限制,无法直接访问服务器资源 - JSP:完全访问服务器资源(数据库/文件系统) 2. **错误处理**: - JS:错误显示在浏览器控制台 - JSP:错误记录在服务器日志中 3. **性能影响**: - JS:减少服务器负担,但依赖客户端设备性能 - JSP:增加服务器负载,但兼容所有浏览器 4. **数据敏感度**: - JS:不能处理敏感数据(API密钥等) - JSP:可安全处理敏感业务流程 --- #### 协作场景示例 ```jsp <%@ page import="java.util.Date" %> <html> <head> <script> // JS客户端功能:实时时钟 function showTime() { document.getElementById("client-time").innerText = new Date().toLocaleTimeString(); setTimeout(showTime, 1000); } </script> </head> <body onload="showTime()"> <!-- JS生成的客户端时间 --> <p>客户端时间: <span id="client-time"></span></p> <!-- JSP生成的服务器时间 --> <p>服务器时间: <%= new Date() %></p> <!-- JS-JSP混合数据传递 --> <script> const serverData = { appVersion: "<%= application.getAttribute("appVersion") %>" }; console.log("从JSP获取的版本号:", serverData.appVersion); </script> </body> </html> ```
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值