前言:

有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客。大学考试真是越来越恶心了,各种心酸,那酸爽,够味。不过还好,马上就要大三了,听大三学长学姐说大三好多都是考查课,考试的科目少了,心中还是挺期待的,给学弟学妹们祈福吧,要好好学习,大学不再是之前的大学了,大学的考试也不再是之前的考试了。大一欠下的知识终究是要还的,所以奉劝学弟学妹们别想着欠债了,把大学该学的尽力学好,为自己负责。

之前在公司做项目接触的太多太杂了,等做完项目后发现有个弊端,好多知识只能说出个大概,不像之前写博客研究某一个知识点能知其然并知其所以然,比如说Servlet,虽说之前大概学过,用的时候也会用,但是让我给别人讲,还达不到精简的境界,今天翻了翻之前写过的笔记,好像理解比以前深了一层,作此篇,分享给大家。

如何理解Servlet?

学前提要:

我在这主要强调理解学习Servlet的思维,要是想细品Servlet,请看之前写过的博客《Java匹马行天下之JavaWeb核心技术——Servlet》https://www.cnblogs.com/zyx110/p/10771172.html,更多精彩邀您观看。学过Servlet的都知道,Servlet3.0之前的版本要使用Servlet,需要在web.xml中进行配置,在web.xml中配置Servlet时可以配置一些初始化参数,在servlet中可以通过ServletConfig接口提供的方法来获取这些参数。这种方法我在之前的博客中写的很详细,就不多说,我主要说在Servlet3.0及3.0之后的版本,该版本新增了若干注解,用于简化Servlet、Filter(过滤器)和监听器(Listener)的声明,这使得web.xml部署描述文件不再是必选的了。

要理解Servlet首先要知道Servlet是JavaWeb的三大组件之一(Servlet、Filter、Listener),还要知道ServletContext是JavaWeb四大域对象之一(PageContext、ServletContext、ServletRequest、HttpSession)。(在这提一下,具体的看前面链接中的博客或者百度)

初步了解:

我们之前学的JavaSE中的一些基础知识只是在控制台输出,现在学习Servlet后不仅能在控制台上输出,还能跟浏览器进行交互,例如客户端发出登录请求,或者发出注册请求都由Servlet来完成处理,在Servlet中通常需要接收请求数据、处理请求、完成响应。

好,知道Servlet是用来干什么的,接下来再说Servlet是如何实现的。

具体实现:

在《Java匹马行天下之JavaWeb核心技术——Servlet》 “https://www.cnblogs.com/zyx110/p/10771172.html”中有写到Servlet有三种实现方式,在这我只演示实现Http协议的Servlet,别的实现方式自己看上面的博客,里面也很全面。

我用的工具是IDEA,下载和安装见《IDEA永久使用》https://www.cnblogs.com/zyx110/p/10801680.html,新建的是Maven项目,对maven不熟的朋友可以先看《我们一起走进Maven——知己知彼》https://www.cnblogs.com/zyx110/p/10619148.html,需要在你的电脑上安装并配置Maven环境,具体安装配置过程见《Maven的安装与配置》https://www.cnblogs.com/zyx110/p/10801666.html,完成以上这些,我们开始Servlet学习之旅。

新建Maven项目

如何新建一个Maven项目见《IDEA为新手专业打造》https://www.cnblogs.com/zyx110/p/10802098.html。

实现Servlet

创建一个Servlet类

继承HttpServlet实现Servlet

为什么会出现报红?

没有导入Servlet模块,相当于Myeclipse里的jar包。

导入Servlet模块

如何在maven项目中导入Servlet模块?

先从Maven存储库(https://mvnrepository.com/)中搜索需要导入的模块,现在我们需要导入Servlet模块,操作过程如下图所示:

这时重点来了,如果是用Servlet3.0之前的版本,需要在web.xml中配置响应的参数

现在我用的是Servlet3.0之后的版本,只需加一个@WebServlet(“/login”)的注解,通过解析注解实现Servlet,可以不用在web.xml中配置了。

package servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/login")
public class ServletDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello Servlet!!!");}
}

  

设置Tomcat

Tomcat配置成功,代码如下:

package servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/login")
public class ServletDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello Servlet!!!");//向控制台输出//设置编码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");//设置服务器响应的格式resp.setContentType("text/html");//从浏览器接收参数String name = req.getParameter("name");//在控制台输出从浏览器接收的参数System.out.println(name);//向浏览器页面输出resp.getWriter().println("<font color='red'>我要通过Servlet在浏览器页面输出</font>");}
}

  

运行项目

整个完整的Servlet模块完成,Servlet的接收请求和完成响应都有展示,对于初学者,能看到这些效果我想或许能有些许兴奋吧。。。。。。至少小有收获了,恭喜你入门。

Servlet理解的要点

入门后要继续深究,我在这引一下Servlet中需要学习的要点,具体学习看文章开头分享的博客,里面很详细。

  • ServletContext域对象
  • Servlet生命周期
  • 请求和响应机制
  • JSP

此篇名为站在巨人的肩膀上看Servlet,实际上是让初学者在宏观的思维先了解Servlet,然后进行系统的学习,我觉得这样比直接看Servlet官方语言知识点好理解。Servlet学习还是很重要的,毕竟它是前后端沟通的桥梁,我只是在学习的时候感觉顿悟了一点,要是分享的过程中有不对的地方,还望大家海涵并指正,谢谢!

*****************************************************************************************************

我的博客园地址:https://www.cnblogs.com/zyx110/

转载请说明出处

我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的技术分享“Java匹马行天下”和学习心得分享“匹马行天下”,在分享中进步,越努力越幸运,期待我们都有美好的明天!

支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。

转载于:https://www.cnblogs.com/zyx110/p/11181005.html

站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)相关推荐

  1. 站在巨人的肩膀上看世界,MySQL初步使用语法

    站在巨人的肩膀上看世界,MySQL初步使用  MySQL是一个常用的数据库,对于他的使用,我们需要尽量的了解它,但是掌握初步的语法,也可以勉强使用它,这都归功于它的研发者们.正是因为这些大佬,写好了软 ...

  2. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们<Visual C++游戏开发>专栏的游戏引擎导论,也 ...

  3. 3小时快速入门数学建模竞赛-建模技巧2:追根溯源,站在巨人的肩膀上

    我们要检索哪些信息?和怎样获得快速.准确的信息?这两个问题. 首先回答第一个问题,我们需要检索哪些信息?我们从我们需要求解的内容入手,请看思维导图和系统框图,我们需要求解35年寿命期内的发电总量.经济 ...

  4. 知识就是力量,让机器站在巨人的肩膀上

    作者:微软亚洲研究院 闫峻博士 知识是什么?抽象来说,是人类对世界的认知,对宏观及微观世界客观规律的总结.具体来说,大到牛顿定律.量子力学中的科学发现,小到自家孩子的生日.太太做饭常用的酱油颜色,都是 ...

  5. 游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057 作者:毛星云(浅墨 ...

  6. 站在巨人的肩膀上:C#编写WindowsService

    本文将为大家详细介绍如何用C#编写一个系统服务,当然肯定不是教大家从头写,而是在一个搭建好的框架上进行自我创作! 一.项目整体架构 本项目的开发是针对某设备的开启异常情况进行邮件提醒,针对监控到的未开 ...

  7. 双引擎架构 Vite 是如何站在巨人的肩膀上实现的?

    在前面的章节中,我们学习了很多 Vite 使用和项目搭建的内容.接下来让我们将目光集中到 Vite 本身的架构上,一起聊聊它是如何站在巨人的肩膀上实现出来的.所谓的巨人,指的就是 Vite 底层所深度 ...

  8. 站在巨人的肩膀上--同时要怀疑巨人

    时刻保持怀疑的态度.--题记 站在巨人的肩膀上很重要,但是要看清谁是巨人,跟着巨人做重要,但是一定要原原本本的看清楚, 照着葫芦画瓢,最可怕的是没有照着,或者站在了巨人出错的地方. 我忽然想到了上次调 ...

  9. 如何写出高质量代码——站在巨人的肩膀上

    如何写出高质量代码--站在巨人的肩膀上 高质量代码的三要素:可读性,可维护性,可变更性 可读性强 可维护性:适应软件在部署和使用中的各种情况 1.3 可变更性:因需求变化而对代码进行修改 牛顿曾经说过 ...

最新文章

  1. iOS和android运存机制,为什么苹果4GB运存却比安卓8GB更丝滑流畅?看完立马涨知识了...
  2. ASP.NET 配置log4net日志功能
  3. how is bookmark function implemented in Opportunity
  4. OSGi简介–模块化Java
  5. [转]Ubuntu远程桌面登陆
  6. 【bzoj4444】[Scoi2015]国旗计划 倍增
  7. 字符缓冲输入流 BufferedReader java
  8. JavaScript知识点查阅
  9. linux 对象 调出r_[转载]linux系统下安装R包
  10. 论文笔记_S2D.35-2017-IROS_利用CNNs联合预测RGB图像的深度、法线和表面曲率
  11. Hadoop学习笔记—6.Hadoop Eclipse插件的使用
  12. java.lang.ArrayIndexOutOfBoundsException 索引越界异常
  13. bam文件读取_sam和bam文件处理
  14. mac安装win10_VMware mac虚拟机安装Win10系统的详细教程
  15. QMT量化交易网格交易 源码
  16. 数据可视化之美—BI
  17. RGB与16进制值互相转换
  18. selenium:class属性内带有空格的定位坑
  19. 计算机网络安全技术文献综述,计算机网络安全防护技术研究总结与参考文献
  20. 【Rosalind】Counting Point Mutations

热门文章

  1. 【codevs1282】约瑟夫问题
  2. NYOJ477 - A+B Problem III
  3. python 调用父类classmethod_Python__子类调用父类的方法
  4. 云服务器升级系统,centos云服务器系统升级
  5. JavaScript的for of语法遍历数组元素
  6. WPF自定义开关切换按钮
  7. CSS:hover伪类使用
  8. java Map及其实现类的底层原理
  9. 七种方法实现单例模式
  10. pytorch中lr_scheduler的使用