2024蓝旭春季培训预习(四)——MVC+servlet、jar包介绍、如何导包合实现

Servlet

想要学习servlet我们要先知道servlet是什么。我们都知道网页上的东西会通过我们想要得到的信息来进行与顾客的交互,那我们又是如何在只有一堆描述网页外观的外观上面来进行交互的呢?

在用户访问一个页面的时候,他会直接与这个网页的浏览器进行信息上的传递,通过各种网络协议来使得网络上的信息的完整性和安全性。

而servlet就是针对从客户端传送到服务器上的指令进行一定的回复,我们可以看看我从其他博客中找来的图片进行理解。

继承关系

知道了以上的概念,我们接下来具体来将一下servlet的相关知识。

我们要想在java中定义了一个类,这个类必须得是继承自一个servlet相关库里面的东西。

首先我们得先知道servlet这个东西在java中是一个接口,我们如果要实现里面的接口的话,我们就必须实例它里面的方法,当然这些方法在外面必要的程序运行中都是必须的。

其继承的关系就由我们看看我从其他博主那边寻来的一张关系图。

所以我们如果想要使用一个功能比较完整的servlet的话,可以直接继承httpservlet这样我们就可以直接获得到一个可以直接使用的servlet了。

 getServletInfo()

这个方法会返回Servlet的一段描述,可以返回一段字符串。

getServletConfig()

这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象。

Servlet

这个比较重要,我们接下来将重点讲解。

生命周期

我们都知道一段运行程序想要进行一定的功能或者作用的话,那这个程序就必然有他的作用的地方和生命周期。

我们可以直接看看接口servlet中的有些什么相应要实现的功能。

下图是我接口servlet的结构。

我们可以看到这里面有几个必要的方法,其实这就是我们servlet生存必要的方法。

init()

init方法,正如其名,他就是servlet在刚创建之初,第一次接收到请求的时候,最先调用的一个方法,是初始化这个servlet必要的方法。

service()

每次进行请求的时候,都会先访问我们的servise方法,这也是我们运行的时候的主体所在。

destroy()

当我们要销毁掉这个Servlet的话,就会自动调用destroy这个方法,以防止我们在运行这个Servlet的时候开启着某个数据流,这样我们就可以将关闭数据流或者一些操作写进destroy中,以保证我们的程序安全正常的运行。

正如我们在idea中创建一个Servlet的文件的话,就会自动生成下面的一段代码。

并得到以下的结果。

可以看出这个程序改写了相应的init方法和destroy的方法,运用了doget的方法在我们访问这个网站的时候,将html语言通过输出流的方式传递给网页,使得我们获得了相应的“Hello World!”。

HttpServlet

接下来我们来具体讲讲Servlet为我们搭建好的一个较为完整的适用于网页的httpServlet的方法。

service()方法

我们之前看到idea为我们自动生成的代码中就运用了其他两个方法。

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        if (req instanceof HttpServletRequest && res instanceof HttpServletResponse) {
            HttpServletRequest request = (HttpServletRequest)req;
            HttpServletResponse response = (HttpServletResponse)res;
            this.service(request, response);
        } else {
            throw new ServletException("non-HTTP request or response");
        }
    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

以上就是HttpServlet中的service方法,我们可以看见httpservlet提供了一个公开的service方法,然后将收到的ServletRequest和ServletResponse进行向下转换成为了httpservlet中运用的Request和Response重新传回另一个service方法。

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getMethod();
        long lastModified;
        if (method.equals("GET")) {
            lastModified = this.getLastModified(req);
            if (lastModified == -1L) {
                this.doGet(req, resp);
            } else {
                long ifModifiedSince = req.getDateHeader("If-Modified-Since");
                if (ifModifiedSince < lastModified) {
                    this.maybeSetLastModified(resp, lastModified);
                    this.doGet(req, resp);
                } else {
                    resp.setStatus(304);
                }
            }
        } else if (method.equals("HEAD")) {
            lastModified = this.getLastModified(req);
            this.maybeSetLastModified(resp, lastModified);
            this.doHead(req, resp);
        } else if (method.equals("POST")) {
            this.doPost(req, resp);
        } else if (method.equals("PUT")) {
            this.doPut(req, resp);
        } else if (method.equals("DELETE")) {
            this.doDelete(req, resp);
        } else if (method.equals("OPTIONS")) {
            this.doOptions(req, resp);
        } else if (method.equals("TRACE")) {
            this.doTrace(req, resp);
        } else {
            String errMsg = lStrings.getString("http.method_not_implemented");
            Object[] errArgs = new Object[]{method};
            errMsg = MessageFormat.format(errMsg, errArgs);
            resp.sendError(501, errMsg);
        }

    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

通过上面的代码我们会发现,这是一个在httpservlet里面的一个protected的方法,这就可以识别出不同的请求,然后调用相对应的方法中。

使用httpservlet的一大好处就是,我们没有必要对service进行修改,只要修改对应的doget和dopost即可。

ServletConfig接口

这个接口主要是在初始化的时候将web.xml文件中的关于这个Servlet的init-param进行一个记录,将其初始化进相应的ServletConfig中。

<servlet>
  <servlet-name>servletName</servlet-name>
  <servlet-class>servletClass</servlet-class>
  <init-param>
     <param-name>key</param-name>
     <param-value>value</param-value>
   </init-param>
</servlet>

这个其中的param可以是提前存储的密码、账户之类的等等。

映射方式

当我们在浏览网页的时候,时常会发现许多种情况,并且面对着不同的界面,就像主菜单栏上可能会显示注册或者登录等等,多种多样不同的请求,而不同的请求其实就对应着不同的Servlet,我们只要对应不同的Servlet进行不同的重写dopost或者doget方法即可。

而每一个不同的Servlet我们如何进行加以区别呢?实际我们只需要在web.xml中映射不同的url地址即可。

就像这个样子,我们就可以相应的url访问到这个网址啦。

这里面的servlet-name是我们的创建的Servlet的名称,servlet-class是我们这个Servlet所在的路径,servlet-mapping是我们这个Servlet的映射,相应的名字映射到相应的url上面去。

然而除了这种写法我们可以直接在Servlet的文件上方加一句语句。

这样我们就可以不用在web,xml上进行相应的部署了。

但是我们还要知道一件事情,web.xml文件中部署的映射的优先级是要高于在Servlet上方进行描述的。

Cookie

大致了解了下Servlet,我们来接下来了解一下Cookie。

我们在生活中常常会看到浏览器管理我们相应的Cookie,那么Cookie是什么呢?

其本质是一个键值对,可以在浏览器和用户端进行一个交换信息的操作,使得我们有时在初始化的时候就可以直接通过电脑中存储的Cookie码进行自动的认证。

这样可以减少用户操作的时间和次数。

Session

session是由服务器创建进行分发的,将session的值存储在服务器内部,并只提供sessionid进行外界的使用。因此,合理有用session可以使程序的安全性提升。

在Servlet中,Session是通过HttpSession接口来表示的,它通过HttpServletRequest.getSession()方法可以获得HttpSession对象。

MVC

MVC(Model-View-Controller)是一种常见的软件设计模式,它将应用程序的逻辑分离成三个独立的组件:

模型(Model):模型是应用程序的数据和业务逻辑的表示。它负责处理数据的读取、存储和操作,以及业务规则的处理。模型通常是独立于用户界面的,可以在不同的视图和控制器之间共享和重用。
视图(View):视图是用户界面的呈现部分,负责展示数据给用户,并接收用户的输入。视图通常是根据模型的数据进行渲染和更新的,它可以是Web页面、图形界面或命令行界面等。
控制器(Controller):控制器是模型和视图之间的协调者,负责接收用户的输入并根据输入调用相应的模型逻辑。控制器将用户的请求转发给模型进行处理,并将处理结果传递给视图进行展示。控制器还可以处理视图的事件和状态变化

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值