Servlet教程详解

前言:html

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

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

 

如何理解Servlet?

学前提要:

我在这主要强调理解学习Servlet的思惟,要是想细品Servlet,请看以前写过的博客《Java匹马行天下之JavaWeb核心技术——Servlet》http://www.javashuo.com/article/p-rehityym-a.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是如何实现的。eclipse

 

 

具体实现:

在《Java匹马行天下之JavaWeb核心技术——Servlet》 “http://www.javashuo.com/article/p-rehityym-a.html”中有写到Servlet有三种实现方式,在这我只演示实现Http协议的Servlet,别的实现方式本身看上面的博客,里面也很全面。maven

 

我用的工具是IDEA,下载和安装见《IDEA永久使用http://www.javashuo.com/article/p-ofbrpfbc-ba.html,新建的是Maven项目,对maven不熟的朋友能够先看《咱们一块儿走进Maven——知己知彼http://www.javashuo.com/article/p-vmuhqqma-w.html,须要在你的电脑上安装并配置Maven环境,具体安装配置过程见《Maven的安装与配置》http://www.javashuo.com/article/p-ygbocoos-cg.html,完成以上这些,咱们开始Servlet学习之旅。ide

 

新建Maven项目

如何新建一个Maven项目见《IDEA为新手专业打造http://www.javashuo.com/article/p-uwlbxbez-cc.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 {
    @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/

 本文已独家受权给脚本之家(jb51net)公众号独家发布

相关文章
相关标签/搜索