构建Java Web应用程序时遵循MVC的三个步骤

步骤1

始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理
为什么
ActionBeans(无论某些框架调用那些类),而servlet很少是控制器 用于处理用户输入。 JSP是专用于将软件表示呈现给客户端的视图引擎。 分开的用户输入处理和HTML呈现使您避免创建巨大的,多功能的,不可测试的JSP,这些JSP混合了业务和表示逻辑,并违反了MVC模式。
第2步

通过转发到仅位于/ WEB-INF / {JSP文件夹}下的JSP来呈现视图
为什么
视图只能通过软件设计访问,而不能直接访问。 将JSP放置在项目的根目录中会带来与客户端不必要的访问有关的安全性问题。此外,将所有JSP隐藏在/ WEB-INF下的做法还减少了JSP处理非控制器处理的URL的可能性,并帮助我们遵循步骤1。
步骤三

仅通过使用请求属性或闪存作用域将模型从控制器传递到视图
为什么
能够访问某些数据的所有其他视图方式都太有限或不安全。 直接在视图内使用请求参数可能是恶意用户传递无效数据的选项。 使用会话存储信息会导致内存消耗,并且需要一些机制来在到期后清除未使用的数据。 Cookies取决于浏览器,其大小有限且使用起来不太友好。 另一方面,请求属性没有所有这些缺点,并提出了控制器职责(更新模型)和视图职责(读取模型)的干净分离。 当涉及无法使用请求属性的“ 后发重定向”模式时,Flash作用域变得非常方便。
PS:所有基于行动的现代框架都在使用以下描述的步骤来实现其目标。 但是,如果您使用一些老式的代码或根本不使用任何框架,您仍然可以实现良好的整洁和易于使用的MVC。
参考:在Jk 博客博客上,从我们的JCG合作伙伴 Evgeny Shepelyuk 构建Java Web应用程序时,遵循MVC的三个步骤 。

翻译自: https://www.javacodegeeks.com/2012/07/three-steps-to-follow-mvc-while.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

曝光原理_泰国精戈咖啡效果反馈 作用原理曝光

我的男人才三十五六,两个人就开始分开睡了,自从咱们在一起以来,咱们的感情一向很好,这是十分调和的。但随着年纪的添加,我逐渐发现他身体阑珊的越来越凶猛,夫妻生活方面硬度逐渐下降,时间也越来…

使用junit4测试Spring

Spring 提供便捷的测试,非常方便整合Junit 导入 spring-test-3.2.0.RELEASE.jar ---- 提供与Junit的整合 RunWith(SpringJUnit4ClassRunner.class) // 整合 ContextConfiguration(locations"classpath:applicationContext.xml") // 加载配置public class…

EasyCriteria –使用JPA Criteria的简便方法

今天,我们将看到有关此工具的信息,该工具使使用JPA Criteria更加容易。 使用该库的应用程序将在JPA实现中更加简洁,易于使用和可移植。 在本文的结尾,您将找到要下载的源代码。 什么是标准? 当前是创建动态查询的最佳…

语言模拟蒲丰问题_R语言小数定律的保险业应用:泊松分布模拟索赔次数

原文链接:拓端数据科技 / Welcome to tecdat​tecdat.cn在保险业中,由于分散投资,通常会在合法的大型投资组合中提及大数定律。在一定时期内,损失“可预测”。当然,在标准的统计假设下,即有限的期望值和独立…

THINKPHP

路径 /index.php/home/...一般路径应用或者U方法转载于:https://www.cnblogs.com/lidepeng/p/6180631.html

JavaScript下的进制转换

JavaScript下的进制转换 //十进制转其他进制 var num 99; console.log(十进制: , num); console.log(八进制:, (num).toString(8)) console.log(十六进制:, (num).toString(16)) console.log(三十二进制:, (num).toString(32))//其他转十进制 var x 110; console.log(二进制&…

Spring Security第2部分–密码加密,自定义404和403错误页面

这是Spring安全站的第二部分。 在这篇文章中,我将向您展示如何使用MD5加密密码以及自定义403和404状态代码错误页面。 如果您尚未阅读第1部分,请单击 此处 。 因为我们在这里继续第1部分项目。 下载已完成的项目: http : //www.mediafire.com…

浅谈 PHP 与手机 APP 开发(API 接口开发)

本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人一、先简单回答两个问题:1、PHP 可以开发客户端?答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分&…

获取人口_「微科普」14亿人口数据是如何得到的?

中国经济交出了2019年终答卷GDP总量近百万亿元人均GDP突破1万美元……小伙伴们在关心经济发展的同时也非常关注人口数据14亿人口的话题嗖的一下就上了热搜大家想不想知道14亿人口的数据是怎么得到的?我们今天就来科普一下如何获取人口总量?通常情况下&am…

8.动态规划(1)——字符串的编辑距离

动态规划的算法题往往都是各大公司笔试题的常客。在不少算法类的微信公众号中,关于“动态规划”的文章屡见不鲜,都在试图用最浅显易懂的文字来描述讲解动态规划,甚至有的用漫画来解释,认真读每一篇公众号推送的文章实际上都能读得…

更改Java包名称如何改变我的系统架构

即使只是少量更改角度,也可能对您如何使用系统产生深远影响。 假设您正在用Java编写Web应用程序。 在系统中,您处理订单,客户和产品。 作为Web应用程序,您的类包括诸如Controller,PersonRepository,Custome…

静态属性_Java面试题—内部类和静态内部类的区别

内部类和静态内部类的区别内部类:1、内部类中的变量和方法不能声明为静态的。2、内部类实例化:B是A的内部类,实例化B:A.B b new A().new B()。3、内部类可以引用外部类的静态或者非静态属性及方法。静态内部类:1、静态…

储存与更新 access_token

做微信的项目,一开始就是 access_token 的申请,微信文档上写的比较清楚: 1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,…

Eclipse安装以及JDK环境变量配置

首先是下载Eclipse;点击链接打开Eclipse官网eclipse官网点击DownLoad Packages,注意是点击“DownLoad Packages”点击你需要的版本开始下载(一般是64bit Eclipse IDE)等待几秒钟,开始下载这样Eclipse已经下载好了&…

完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComplete),JPA / Hibernate(具有NxN关系…

mysql主从架构升级_实战项目——mysql主从架构的实现

一主一从1.1 环境准备:centos系统服务器2台、 一台用户做Mysql主服务器, 一台用于做Mysql从服务器, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信1.2 准备步骤:1)iptables -F && s…

FastReport.Net使用:[30]对话框使用

使用对话框需要知道的地方 1.按钮的DialogResult属性。 假如DialogResult属性值为OK的按钮被点击,报表将会展现后面的对话框或者报表页;如果属性值为None,则停留在当前窗体;如果为其他值,则直接退出报表打印&#xff0…

模拟聊天室显示语句保持最新显示

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>模拟聊天室显示语句保持最新显示</title> <style> *{ border-collapse: collapse; } .dialog_box{ width:400px; height: 600px; margin…

改善Java EE生产支持技能的8种方法

参与Java EE生产支持的每个人都知道这项工作可能很困难。 7/24传呼机支持&#xff0c;定期处理的多个事件和错误修复&#xff0c;来自客户和管理团队的压力&#xff0c;要求它们尽快解决生产问题并防止再次发生。 在日常工作中&#xff0c;您还必须照顾由多个IT交付团队驱动的多…

plsql连接mysql_安装了mysql和pl/sql,怎么配置让pl/sql能联接mysql数据库

64位环境下&#xff0c;使用PL/SQL Developer连接Oracle&#xff1a;•1. 下载32位Oracle InstantClient&#xff0c;并展开到某目录&#xff0c;例如C:\instantclient-basic-nt-11.2.0.2.0&#xff1b;•2. 将系统的tnsnames.ora拷贝到该目录下&#xff1b;•3. 在PLSQL Devel…