只用jsp实现同样的Servlet功能

Jsp最终都会转化成java形式的Servlet执行,因此也可以说Jsp的本质就是Servlet,在jsp执行后,会在服务器上(例如tomcat中)生成.java以及.class文件。具体执行过程如下:

Fig.1 Jsp的执行过程

Fig.2 Jsp具体执行过程

如图所示,Servlet能实现的功能,Jsp也能实现。

举个简单的例子,之前我用jsp显示前端+Servlet实现后端逻辑,这里我把逻辑实现也用Jsp实现:

<body>
<form action="ResultJsp.jsp">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="submit">
<input type="reset" value="reset">

</form>
</body>

ResultJsp.jsp代码实现逻辑如下:

<body>

<%
String username=request.getParameter("username");
String password=request.getParameter("password");

response.setContentType("text/html");

out.println("<html><head><title>LoginResult</title></head>");
out.println("<body>username:"+username+"<br>");
out.println("password:"+password+"</body></html>");
out.flush();

%>
</body>

这样我们就能实现之前用java代码实现的Servlet类的功能啦。

总结:

1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。
 
老师发的答案1:
JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet
来生成动态网页;JSP由HTML代码和JSP标签构成,可以方便地编写动态网页
因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
答案2:
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

时间: 2024-10-14 08:48:53

只用jsp实现同样的Servlet功能的相关文章

Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File &amp;quot;/pageFoo

1.错误描述 Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File "/pageFoot.jsp "not found 2.错误原因 <jsp:include page="../../pageFoot.jsp"></jsp:include> 3.解决办法 利用<jsp:include></jsp:includ

在Java代码(非JSP及Action,Servlet,Controller)中获得WebRoot的物理路径

在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径; 如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址. 如果在类中取不到ServletContext时, 有两种方式可以做到 1) 利用Java的类加载机制 调用 XXX.cla

JSP页面跳转Servlet

JSP页面跳转Servlet 项目结构: 2. JSP页面中 1 <% 2 String path = request.getContextPath(); //上下文路径 3 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 4 %> 1 <!--使用相对路径访问Hel

JSP简单练习-用Servlet获取表单数据

// javaBean代码 package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AcceptUserRegist extends HttpServlet { public String codeToString(String str) // 处理中文字符串的函数 { String s=str; try { byte tempB[]=s.getByt

jsp页面转发到servlet

一个简单的例子来了解一下jsp页面转发到servlet的过程,环境 eclipse.tomcat 1.工程目录结构如下 2.各部分代码如下 1>index.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML

java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/

严重: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root 

jsp页面编译成Servlet类文件

package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.util.*; public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase     implements org.apache.jasper.runtime.JspSource

JSP转译成Servlet详细过程

很多人都会认为JSP的执行性能会和Servlet相差很多,其实执行性能上的差别只在第一次的执行.因为JSP在执行第一次后,会被编译成 Servlet的类文件,即.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不再重新把JSP编译成Servelt. 因此,除了第一次的编译会花较久的时间之外,之后JSP和Servlet的执行速度就几乎相同了.Web容器处理JSP文件请求的执行过程主要包括以下4个部分: 1.客户端发出Request请求 2.JSP Container 将J

tomcat各版本和jsp、jstl、servlet的依赖关系(转)

Servlet / JSP / Tomcat  Version  Servlet/ JSP    Tomcat  2.5/2.1 6.0.18 2.4/2.0 5.5.27 2.3/1.2 4.1.39 2.2/1.1 3.3.2 (archived) Servelt / JSP/JSTL / J2EE Version Servlet JSP JSTL Java EE 2.5 2.1 1.2 5 2.4 2.0 1.1 1.4 2.3 1.2 1.0 1.2 http://www.cnblogs