前言:


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


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

 

如何理解Servlet?

学前提要:

我在这主要强调理解学习Servlet的思维,要是想细品Servlet,请看之前写过的博客《Java匹马行天下之JavaWeb核心技术——Servlet》
https://www.cnblogs.com/zyx110/p/10771172.html
<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>》 “
https://www.cnblogs.com/zyx110/p/10771172.html
<https://www.cnblogs.com/zyx110/p/10771172.html>
”中有写到Servlet有三种实现方式,在这我只演示实现Http协议的Servlet,别的实现方式自己看上面的博客,里面也很全面。

 

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

 

新建Maven项目

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

 

实现Servlet

创建一个Servlet类



继承HttpServlet实现Servlet



为什么会出现报红?

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

 

导入Servlet模块

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

先从Maven存储库(https://mvnrepository.com/ <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 { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { doPost(req, resp); } @Override protected 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 { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { doPost(req, resp); } @Override protected 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/ <https://www.cnblogs.com/zyx110/>

转载请说明出处


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

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

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信