java EE开发之Servlet第八课:MVC模式 (基本理解)

深入理解 Java Servlet:核心原理与实战开发全解析 通过实践,您可以掌握 Servlet 的核心功能、JSP 的动态页面渲染,以及如何通过 JDBC 操作数据库,为开发真实项目打下坚实的基础。Servlet 的配置方式灵活多样,基于 XML 的传统方式适用于复杂场景,而基于注解的方式简化了开发流程。Servlet 是 Java Web 技术的核心组件,其强大的扩展性和与现代框架的兼容性使其成为 Web 开发的基石。从技术角度来说,Servlet 是 Java Web 应用的核心,它通过一个标准化的 API,帮助开发者简化 HTTP 请求和响应的操作。 阅读详情

##1,为什么需要MVC模式?
为什么需要MVC模式,以前简单的JSP页面处理不好吗?MVC有什么好处呢?
答:MVC就是常说的:

模型(Model):POJO(Plain Old Java Object普通类)

视图(View):Jsp
控制Controller):Servlet Filter


它把业务处理和Jsp页面分开了。而以前的Jsp页面是把所有的代码都写在Jsp 页面中,那样不利于维护,MVC模式的目的就是实现Web系统的职能分工。

####MVC模式的好处:

#####1.各施其职,互不干涉
   在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生 了变化,就只需要更改相应的层中的代码而不会影响到其它层中的
代码。

#####2.有利于开发中的分工

在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中
的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开
发人员可开发业务层,而其它开发人员可开发控制层。

#####3.有利于组件的重用

分层后更有利于组件的重用。如控制层可独立成一个能用的组件, 视图层也可做成通用的操作界面。


##2.MVC的基本原理是怎样的呢?

每个层之间的关系又是怎样的,它们是怎样执行的?
答:基本原理是:
这里写图片描述

每一步代表的意思是:

#####1,jsp页面,通过请求到配置文件中然后到Struts2Filter

#####2,a,在Struts2Filter中 通过页面的请求Action=“XXX.action”


//获得要请求的路径 打印uri的结果是 :/MVCTest1/reg.action
String uri=request.getRequestURI();
//获得请求的文件名:打印requstname 的结果是:reg.action
String reqeustname=uri.substring(uri.indexOf("/",1)+1);
//通过要请求的文件名到属性文件中去找相对应的类的名称
String classname= ps.getProperty(reqeustname);


#####3,返回一个相对应的类的名称


//去CLASS类中找类名为 classname的类
Class c=Class.forName(classname);
//找到后再调Class类的构造方法
Object obj=c.newInstance();
//因为obj是实现了Action接口的,所以
Action action=(Action)obj;


#####4,找到类后再去调类中的方法,

//然后再调Action中的execute方法  返回一个String字符串
String result = action.execute(request, response);
action.execute(request, response);//主要是用来调用Dao层的方法的


#####**5,因为类都实现了Action的接口,所以再第三步中可以中接口来作为类型 **

//接口是一个业务员要工作的一组规范
//参数是:请求对象 和响应对象
//返回是:String 最终页面跳转的路径
public String execute(HttpServletRequest  
request,HttpServletResponse response)throws Exception;


#####6,因为方法的返回类型是 String对象,这个字符串代表的就是最终跳转的和页面,但是有一个问题,就是跳转的方式有重定向和转发这里,我们不做判断,默认就用转发

//重定向:通过request.getContextPath()得到上下文路response.sendRedirect(request.getContextPath()+"/"+path);

//转发 request.getRequestDispatcher("/"+path).forward(request, response);


##3.具体实现

(1)开发一个Struts2Filter(公司),要求能够接收所有的.action请求。(即配置web.xml文件达到要求)


public class Struts2Filter implements Filter{
    public void destroy() {
    }

........
    public void doFilter(ServletRequest req, 
        ServletResponse res,FilterChain chain) 
        throws IOException, ServletException {

    }


}

(2)开发一个业务员的接口Action接口,要求定义一个行为,即execute方法,传入请求与响应对象,返回一个结果页面的jsp文件名。


public class MaleAction implements Action {

    public String execute(HttpServletRequest 

                request,HttpServletResponse response) {
            String uname = request.getParameter("uname");
            request.setAttribute("uname", uname);

            System.out.println(uname+"你好,刘教授为你看病...");
            return "maleOk.jsp";
    }
}

(3)在WEB-INF目录上加一个属性文件,文件名:actionConfig.properties,此文件是一个注册了请求的URI与业务员类的对应关系。
#资源文件
#男科 = 专家刘教授
#内科 = 主任孙教授

male.do = com.kz.action.MaleAction
#female.do = com.accp.action.FemaleAction
query.do = com.kz.action.QueryAction
del.do = com.kz.action.DelAction

(4)在Struts2Filter类的init方法中将属性文件actionConfig.properties文件内容加载到一个属性对象中。
public void init(FilterConfig filterConfig) throws    
                            ServletException {
            //读取本地资源配置文件
            InputStream is =filterConfig.
                                getServletContext().
                                getResourceAsStream("/WEB-
                                INF/config.properties");
            //把配置文件读入到内存中
            ps = new Properties();
            try {
                ps.load(is);
                //关闭
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
}

(5)在Struts2Filter的服务方法首先对所有的请求参数进行编码。
//System.out.println("访问到了ActionServlet");
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
request.setCharacterEncoding("utf-8");

(6)在Struts2Filter的服务方法中根据请求的URI得到对应的业务员对象。
//1.获取客户端收送的请求类型(具体的请求信息:male.action
//                                             female.action ....)
//    /mvc/male.action
String uri = request.getRequestURI();
//巧用文件对象,获取具体的male.action
File file = new File(uri);
String type = file.getName();
System.out.println(type);

//2.根据请求类型,找到对应的负责处理请求的类
//发出的是一个看男科的请求,就需要找到对应的男科医生
String className = ps.getProperty(type);
if(className!=null){
            //根据具体的类名,获取其Class类型的对象
            Class c =  Class.forName(className);
            //根据 c对象,创建其具体的Action
            Action action =  (Action)c.newInstance();
}

(7)在Struts2Filter的服务方法中得到业务员对象后,调用业务员execute方法,开始工作,并接收业务员返回的结果页面的jsp文件名,在Struts2Filter的服务方法中接收到业务员返回的结果页面jsp名字后后,将页面转发或者是重定向到结果页面去。

//调用action的执行方法(看病的行为,会有一个结果返回)
try{
        String url = action.execute(request,
                                                response);
        //根据结果,执行页面的跳转(默认是转发)
        request.getRequestDispatcher(url).forward(             
                                          request, response);
        //放行---在最后放行
        if(url==null){
            chain.doFilter(request, response);
        }else{
                return ;
        }
 

Java EE MVC模式实现注册登录系统案例详解 在现代web开发中,MVC架构模式是一种常见的设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式将业务逻辑、用户界面和输入逻辑分离,使得开发者可以独立地开发和测试各个部分,从而提高代码的可维护性和可扩展性。JSP是JavaServer Pages的缩写,它允许开发者在HTML页面中嵌入Java代码,使页面内容动态化。JSP页面在第一次被请求时,会转换成Servlet执行。 阅读详情

相关推荐

J2EE20:深入理解Servlet监听器与MVC模式的应用

在当今的Web开发中,Servlet监听器已经成为了一个不可或缺的技术组件。Servlet监听器(Listener)是一种特殊的Servlet,它能够感知并响应Web应用生命周期中的事件,比如Web应用启动和关闭、会话对象的创建与销毁以及请求对象的创建等。这些监听器的引入极大地增强了Web应用的动态性和灵活性,为开发者提供了更加高效和强大的开发手段。在本章中,我们将深入探讨Servlet监听器的概念、工作机制以及分类方式,为读者揭开这个关键组件的神秘面纱,并为后续章节中的人数统计实现打下基础。

weixin_32925455的博客 1099

Servlet开发(1)-----基础及MVC设计模式

一、Servlet介绍 Servlet本身只是普通的Java类,只有当容器为他创建了ServletConfig和ServletContext时才成为了一个Servlet; Servlet简单的说就是一个Java程序,目的和Javabean差不多,为了使得JSP页面中代码简洁、清晰; JavaBean不需要配置,只需要放在WEB-INF/classes中即可; Ser...

weixin_30381317的博客 325

深入理解Java EE:从HelloWorld1入门到实践

Java EE(Java Platform, Enterprise Edition)是Java平台的企业版,它提供了用于开发和运行大型、多层、可伸缩、可靠和安全网络应用程序的API和运行时环境。Java EE基于Java SE(Standard Edition),增加了用于开发企业级应用的服务器端技术。与Java SE相比,Java EE提供了更多适合企业环境的特性和服务,如事务管理、安全性、并发性以及与其他系统的集成。

weixin_31800911的博客 829

基于Servlet的MVC模式

MVC模式介绍 MVC的全名是Model View Controller,是模型(model)-视图 (view)-控制器(controller)的缩写,是一种软件设计典范。 它是用一种业务逻辑、数据与界面显示分离的方法来组织代码, 将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制 界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码 的时间。 MVC是一种通过3个不同部分构...

Shishishi888的博客 1765

深入理解Java Web开发:JSP、Bean与Servlet实战项目

本文还有配套的精品资源,点击获取 简介:本书深入探讨了Java Web开发中的核心技术——JSP、JavaBeans和Servlet。通过分析一个包含实际Java Web项目的压缩包"JSP-Bean-Servlet.zip",本书详细阐述了这些技术的使用和原理。JSP用于实现动态网页和与JavaBeans进行数据交互,后者作为可重用组件封装业务逻辑。Servlet则负责处...

weixin_31591833的博客 1632

基于Servlet的MVC模式.ppt

基于Servlet的MVC模式.ppt

JavaWeb笔记——基于Servlet的MVC模式

MVC模式介绍 JSP中的MVC模式 用户通过视图JSP页面向控制器servlet发出请求处理数据的指令,控制器连接数据库或从文件中读取出数据来存放到模型javaBean文件中然后通过JavaBean文件将页面请求的数据送回到视图JSP页面中显示 模型的生命周期与视图更新 利用RequestDispatcher对象调forward方法来转向show.jsp页面 Ht...

等等waiting 707

自动驾驶车辆纵向控制实战:基于CARLA与ROS2的PID算法实现

本文详细介绍了基于CARLA与ROS2的自动驾驶车辆纵向控制实战,重点讲解了PID算法的实现与应用。通过搭建仿真环境、实现定速巡航和自适应巡航功能,帮助开发者掌握自动驾驶核心技术。文章还分享了系统集成、仿真验证及常见问题的调试技巧,为自动驾驶开发提供实用指导。

weixin_33728708的博客 354

基于servlet的MVC模式------MVC模式设计四则运算小web应用

1,理解mvc设计模式的核心思想,视图,模型,控制器。掌握mvc模式在jsp中的具体体现。 2,在mvc设计模式中,视图由jsp页面负责,模型由JavaBean负责,控制器由servlet负责。 3,模型(Model),一个或多个JavaBean对象,用于存数数据,JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。 4,视图(v...

thewebcode 5918

OpenCV实战:如何用Debevec算法搞定相机响应函数(附完整代码)

本文详细介绍了如何使用OpenCV实现Debevec算法计算相机响应函数(CRF),并应用于HDR图像合成。通过完整的代码示例和工程实践问题解决方案,帮助开发者掌握从原理到实现的关键步骤,提升高动态范围成像和计算机视觉任务的处理能力。

weixin_29061041的博客 229

手把手教你用Apple Developer App完成苹果开发者账号注册(含证件验证失败解决方案)

本文详细指导如何通过Apple Developer App完成苹果开发者账号注册,特别针对证件验证失败问题提供解决方案。从准备工作到注册流程,再到验证失败的处理方法,帮助开发者顺利完成注册,避免常见错误。

moss5的博客 1156

【JavaEE】SpringMVC

请求重定向是指将请求从一个Web资源(如Servlet或JSP)发送到另一个Web资源,并且在过程中会更改URL。在请求重定向期间,Web容器会向浏览器发送一个302 HTTP状态码的响应,该响应包含一个新的URL,浏览器会自动发送一个新的请求以获取新的资源。简单来说就是 客户端像服务器发送请求,服务器这里不处理这个请求,但是会给客户端一个URL,然后客户端根据返回的URL重新访问。上述代码虽然保存了文件,但是有个致命的错误,就是下次再上传文件的时候,之前的旧文件会被新文件覆盖,原因是文件名写死了。

p_fly的博客 939

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 281

Java与MVC模式开发

    Title:  Java与MVC模式开发 Author:  cheyo@JMU    From:  telnet://bbs.jmu.edu.cn  http://bbs.jmu.edu.cn   E-mail:  cheyocn at hotmail dot com    Date:  Tue Oct 4 2005 就自己的理解与体会,谈谈Java中的MVC模式开发,希望对初学Java的

cheyo的专栏 5056

构建具有预测维护能力的AI Agent

随着工业4.0的推进,工业设备的复杂性和自动化程度不断提高,设备的稳定运行对于企业的生产效率和经济效益至关重要。预测维护作为一种先进的设备维护策略,能够通过对设备状态的实时监测和分析,提前预测设备故障,从而避免设备意外停机,降低维护成本。本文的目的是详细阐述如何构建具有预测维护能力的AI Agent,涵盖从数据采集、处理、模型训练到实际应用的整个流程,为企业和开发者提供全面的技术指导。本文将按照以下结构进行组织:首先介绍核心概念与联系,包括预测维护和AI Agent的基本原理和架构;

2501_92132293的博客 943

【Qt图书管理系统】5.完整版源码及下载地址

Qt图书管理系统完整源码下载。

小鱼酱的博客 7001

Java Web开发的基石:深入理解Servlet与JSP​

本文深入解析Java Web开发的基石——Servlet与JSP技术。Servlet作为后台业务处理器,通过Java代码接收和响应HTTP请求;JSP则是将Java嵌入HTML的动态页面技术,两者共同构成了早期Java Web应用的核心。文章详细阐述了两者的工作原理、代码示例及协作模式,指出其形成的MVC雏形为现代框架奠定了基础。虽然当前主流技术已转向Spring等框架,但理解Servlet和JSP对掌握Web开发本质、维护传统系统仍具重要意义。这组黄金搭档展现了Java Web技术的历史演进,是开发者必须

Sagittarius_A*的博客 1105

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2832

Java EE 知识点总结

本文摘要介绍了JavaEE技术体系的核心内容,主要包括:1. JavaEE三层架构(表现层、业务层、持久层)及其技术演进;2. Web开发基础(HTTP协议、B/S与C/S架构比较、Maven工具);3. JSP技术(脚本元素、指令动作、内置对象);4. Servlet与Filter技术(生命周期、请求处理、监听机制);5. EL表达式与JSTL标签库;6. MVC设计模式实现;7. ORM框架(重点介绍MyBatis配置与动态SQL);8. Spring框架(IoC容器、AOP编程);9. SpringM

zxq2wz的博客 1058

YOLOv11改进策略【Conv和Transformer】| IJCAI 2024 利用FreqFormer中的SFA 空间 - 频率注意力和CTA 通道转置注意力 二次改进C3k2

在FreqFormer模型中,SFA(Spatial-Frequency Attention)和CTA(Channel Transposed Attention)模块是关键组成部分,它们针对传统Transformer在图像超分辨率任务中的不足而设计,旨在更好地恢复高频细节,提升模型性能。

Limiiiing的博客 758

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JavaEE 从入门到放弃(四):MVC 模式

通俗易懂地讲解 MVC 模式。

Evan 的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Java EE】初识Spring Web MVC

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为)Spring MVC).Servlet是⼀种实现动态⻚⾯的技术.准确来讲Servlet是⼀套Java Web 开发的规范,或者说是⼀套Java Web 开发的技术标准.

ZXT的博客 2076

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java EE之Servlet、JSP学习

这个学期开了Java EE的课程,借此机会好好的自学了下Java EE。写几篇博客记录下自己遇到的问题、学习过程。希望能帮到有需要的人,也能供自己日后查阅。文章中有错误之处,还请大家指正,共同进步。参考了很多大牛的博客文章,很是感谢。 使用的一些工具如下:     开发工具:Eclipse neon     服务器:Tomcat 8.5     数据库:MySQL 5.6.17   

Umbrella_J 2764

【Java EE进阶 --- SpringBoot】Spring Web MVC(Spring MVC)

MVC是Model View Controller的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。

optimistic_chen的博客 1319

Java EE 复习题集

一、填空题 (1)第一章 概述 大多数应用,从PC机上的简单报表程序到大型机上的复杂计算,都由三部分组成:大多数应用,从PC机上的简单报表程序到大型机上的复杂计算,都由三部分组成:表现层,业务逻辑层,数据访问层。 Java EE为满足开发多层体系结构的企业级应用的需求,提出“组件-容器 ”的编程思想。Java EE应用的基本软件单元是 JavaEE 组件 。 基本软件单元的运行环境被称为 ...

weixin_45786861的博客 1098
上一篇: python+selenium环境搭建步骤
下一篇: 基于HTML5的移动Web应用——文件操作
Meryoufdd
博客等级 码龄5年 13粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值