java web 您所在的位置:网站首页 servlet与jsp的区别与联系 java web

java web

2024-03-01 05:15| 来源: 网络整理| 查看: 265

大学生涯终于结束,在公司学习了一段时间的java web方面的知识,结合自己之前的一些理解,想通过几篇文章来对我所接触到的java技术进行梳理与总结,也希望能给大家一些参考,由于作者水平有限,难免存在一些不足之处,希望能一起探讨!

1、servlet

Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。Servlet本质就是一个服务端的java对象,在这个对象中有一些方法来对浏览器的请求进行处理,并反馈给浏览器。

1.1 Servlet与Servlet容器

首先我们应该理解Servlet与Servlet容器的区别与联系,Servlet容器是用来管理众多Servlet的,有个比喻很好,Servlet容器和servlet就和枪与子弹的关系一样,互相依存但又互相独立,在tomcat中Servlet容器所对应的部分是Context容器,而一个web应用对应一个Context容器,因此一个web应用只有一个Servlet容器。在这里不扯tomcat的内部实现方式,我们只需要记住Servlet容器所做的工作就是在程序运行开始之前对系统配置文件进行解析,将相关的Servlet对象、filter、lintener等信息进行整合与处理。

1.2 Servlet使用

Servlet在http请求的整个处理过程中应该是如下过程:(其中在web容器中可以有若干个Servlet) 用户浏览器操作发出http请求->web容器接收到请求->按照一定方法分配给指定的Servlet进行处理->Servlet将处理的结果反馈给浏览器进行显示 在eclipse中创建一个Servlet,如下所示:

package com.springmvc; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWorld */ @WebServlet("/HelloWorld") public class HelloWorld extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorld() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

可以看出该类继承于HttpServlet,并存在两个主要方法doget和dopost方法,分别来响应get和post请求来处理相应的业务,最后通过sendirect或者forward的方式跳转到想要去的jsp页面。

2、jsp

JSP全名为Java Server Pages,中文名叫java服务器页面,是一种动态网页技术标准,与传统的html不同,jsp是在服务端运行的,这里要明确一点jsp不是一种语言,而是一种技术,运用这种技术可以在html中用来实现java语言的书写,也就是在html页面实现了动态编程,但jsp页面还是属于前端页面部分。如下为新建的jsp页面:

Insert title here 3、Servlet与jsp

那么Servlet与jsp的关系到底是什么,为什么jsp页面中还可以写java代码,这就得从他们的运行机制说起。一个工程运行后会加载所有的Servlet对象,同事也会扫描所有的jsp页面,将jsp页面转化为Servlet,在进行统一处理,因此一个jsp页面实质上也就是一个Servlet。 那么有一个问题了,既然二者相似那么为什么还要分出两个东西,其实用jsp我们完全可以实现一个简单的小网站,需要Servlet的原因就是为了前后台的分离,也就是所谓的解耦,web技术发展的很大一个推动力就是为了解耦,很多的技术都是为此而具有巨大优势,解耦的好处①提高问题的解决概率;②提高问题的解决效果;③提高问题的解决速度;④降低将来爆发隐患的可能性。下面我们通过一个小例子来了解servlet+jsp的实现。 新建工程,创建一个jsp页面:index.jsp,在body中我们加入一个连接,连接到相应的Servlet

Insert title here click

下来创建Servlet:myFirstServlet,并在servlet中作出一些处理并反馈

package com.lib.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class myFirstServlet */ @WebServlet("/myFirstServlet") public class myFirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public myFirstServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub PrintWriter out; out=response.getWriter(); out.write("hello world!"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

这里需要在web.xml中进行配置

index.jsp myFirstServlet com.lib.test.myFirstServlet myFirstServlet / 4、结尾

在这里需要说明一下,Servlet与jsp技术尽管是web技术中非常重要的一项,但现在已经被替代,我们想一下为什么,在系统变复杂时所有的web交互都用 Servlet来实现无疑是繁琐冗余的,因此它有不足之处。jsp技术仍然在应用但是也很少在jsp代码中写大量java代码,也是为了解耦。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有