一、SSM(Spriing springMVC Mybatis)框架搭建常见web应用时所需注意的细节问题及相关思考:

1、项目设计中要注意其直接间接可能涉及的问题,思考边缘性相关内容,思考可扩展性。比如在通用的网站项目中,广告是个很重要的盈利部分。所以在设计广告的数据库时,根据页面显示状况,判断每页显示的信息数量,以及商业运营过程中,广告位的排序问题,比如竞价排名,如何表现呢?比如为每条广告信息增加一个权重字段,比如权重参考值为充值金额,所以设计数据库时,不能仅仅看到当前界面,更要考虑到可扩展性;

2、如上,数据库的字段长度在设计时,要考虑其可能最大长度。图片资源考虑到现实部署中,图片、文件等io静态资源,会存放到单独的静态服务器,而非web前端接口服务器上。所以存放的是图片的文件名,而不是真实路径。因为万一随着数量扩充,静态资源服务器需要扩充,直接写静态服务器绝对地址也是不方便的。真实状态下,通常是将静态资源存放路径作为一个配置文件,给外界,进行灵活部署。

3、项目通常会先做增加数据的功能,之后是查询功能,然后是删除功能,最后是修改功能,因为先开发增加数据的页面,好先往数据库中添加数据,之后可查询,而删除功能再做时即比较方便,修改,更像先删除再增加数据。

4、页面中,能共用的部分,可抽取时,适当考虑共通化。比如,界面上到处都需要共用项目部署时真实的环境上下文路径,可以

抽取出如下用于定位的jsp中用的共通变量,然后再各个页面引入,而为了不在每个页面中写引入语句,可以在配置文件中搞定。

根据提示找到该文件,确定文件所在路径,发现路径级别错误,更正为如下:

5、DTO的使用。实际开发中,鉴于减少宽带流量和数据安全性考虑(防止数据泄露,或者被有心人去分析网站等),后台只向前台传输必需的数据,当数据库中单个表所对应的实体类,无法直接满足界面上相应数据显示时,一般做法是,新创建一个DTO业务类,继承和数据库完全匹配的基础类,然后在其中增加相应的界面显示属性。

6、SSM常见web项目部署架构图如下,通过该图,可以反映出大致的业务访问路径,和各部分之间的关系。比如由此图可便于理解,为何访问静态资源如图片时的路径不直接通过request获取,因为经过Nginx、CDN等,加上各个部分的扩充,路由可能会一直在变化,所以存放图片的数据库字段只是存放了图片的名称,而不是完全的路径。同时图片等文件内容存放的地址通过读取配置文件的方式(配置文件由运维人员部署时根据真实环境按照所需信息进行填写配置)

二、商户管理考究:

1、实体和数据库表设计:

注意实体设计时,画着实线的属性表示直接可源于商户的属性,而虚线的属性表示冗余,或者来源有特殊考究的属性。比如距离,应该是浏览者到商户的位置经过计算得来的。已售数量和星级应该来源于订单。如此等等。

2、接口注意问题:SpringMVC 使用RESTful风格接口的解决方案是,在表单提交请求时,在其中埋入一个隐藏的input,命名一个

_method 的name,value对应到后端实质性的接口。当然,这里依赖于spring MVC进行的特殊处理,即通过过滤器的方式,将http

映射到RESTful API 风格的接口上。

其中映射对应关系为:

spring mvc的配置为:

此处以根据一个商户id删除某个商户为例说明:

表单提交时的使用方法为:注意,这里传统的http请求方法是将id作为hidden元素藏到表单里,因为我们希望通过restful api的方式进行,故这里的表单提交隐藏元素是如下_method  value 为delete。然后通过js的方式进行处理。

js 对应为:

后台接口为:

如上,basepath 为上下文,比较常见,不赘述。如果能打印出id值,即说明删除数据成功。

3、关于商家的搜索相关问题:

正常大项目,搜索 应该是会考虑全文搜索,而不是简单的通过sql的like 模糊匹配进行搜索;

其次,在搜索时,一般比如城市、类别等项目比较多时,一般会考虑code  和 名称进行匹配,单独创建一张表这样的方式进行

处理,简化后期可能的代码维护工作。

4、补充一个对数据进行修改的操作示例:

该示例将一方面介绍如何做修改功能和需要注意的事项,同时说明一个问题,即在如上所说的http请求转restful api接口请求过程

中会出现的一个问题,就是普通数据和上传图片、文件等multipart类型数据在处理时,需要spring mvc做的一个特殊处理。否则

会出现不识别的问题,如下为原理探究:

一个mvc工作流程:

如下为需要在spring mvc配置文件中增加的过滤器,且,spring mvc配置文件中的过滤器在配置时是有顺序规范的,是从上往下依次进行执行和处理的。

学习SSM框架做仿照大众点评的web项目所需考虑细节记录相关推荐

  1. 新手搭ssm要多久_如何快速学习ssm 框架?

    要快速学习SSM框架,你需要一套学习曲线平滑的教程 1. 很快可以看到效果 SSM框架这种教程的,在百度或者git上一搜一大把,不过很遗憾,大部分你照着上面的流程做,是做不出来的,要么缺少包,要么配置 ...

  2. (*)(转)要快速学习SSM框架,你需要一套学习曲线平滑的教程

    作者:meepo 链接:https://www.zhihu.com/question/57719761/answer/156952139 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  3. 学习ssm框架的顺序

    作者:JavaFish 链接:https://www.zhihu.com/question/330118444/answer/723820941 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  4. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门

    Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教.用户.管理员)+可以用于学习SSM框架.javaweb.maven项目入门 可以用于课程设计.毕业设计的知识点入门学 ...

  5. 学习ssm框架一般要用多少时间

    直接说需要学习多少时间不可能的,需要看个人的基础和经验以及学习途径和知识接收度. 但是不建议你现在立即学习SSM,目前可能不会为就业发愁,但是等你需要正式就业的时候,会有很多别的技术更加普及. 先学s ...

  6. java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能

    基于ssm框架组合的增删改查功能 ssm框架组合之前已经搭建完成了,下面基于该框架组合实现增删改查的功能,首先创建一个数据库和一张表: CREATE DATABASE `ssmteam` /*!401 ...

  7. 学校作业——配置ssm框架做一个简单的登陆注册

    补一下blog 1.配置maven 指向阿里的镜像并且导入ssm框架所需的依赖 <mirror><id>nexus-aliyun</id><mirrorOf& ...

  8. 在学习SSM框架的途中遇到的一些常见问题和解决办法

    1.启动Tomcat后访问首页出错 原因:资源没有正确添加,检查编译后的文件的WEB-INF目录下是否有lib目录,如果没有就是错的. 解决方法:在Project Structure中,进入到Arti ...

  9. 自我学习SSM框架集成(二)

    手动SQL方式分页 一.首先来看看最重要的Page类. 首先我们让start默认为0,count=5.count为一页的容量,而令start为0,是如果浏览器访问不输入start参数就默认为从头开始浏 ...

最新文章

  1. date javascript 时区_js Date 时间戳 时区等问题总结
  2. 【Caffe实践】基于Caffe的人脸检测实现
  3. IDLE 策略算法 放置奇兵 小破船翻船记录(悬空岛——冒险(航海))
  4. JavaScript 开发者年度调查报告(2016-01)
  5. bst latex 最大作者数_latex 参考文献作者是三个以上时如何处理?
  6. 关于ORACLE数据传输加密的介绍
  7. R语言中不能安装包(Package)的四种解决办法
  8. 达内android 代码,【达内唯一总部】Android实现获取系统应用列表-达内Android分享...
  9. 百度定位出现162错误码
  10. 51单片机开发板介绍
  11. python从网页提取文本_使用Python进行网页正文提取
  12. ISBN书号怎么查询
  13. 【练习】canvas——flappyBird
  14. scala程序启动时,Could not locate executable null\bin\winutils.exe in the Hadoop binaries解决方案...
  15. 11-git-查看提交历史
  16. Linux下USB驱动框架分析
  17. 两个地址之间的距离测量(使用高德API)
  18. 区块链报告会心得体会3000_讲座心得体会3000
  19. mysql repair 所有表_MySQL磁盘满repair多个表问题的解决
  20. 山东理工大学-2022级-程序设计基础I-实验9 字符串

热门文章

  1. wps js宏编辑器案例3-工作簿和工作表操作
  2. 你感觉到疲倦了吗?释放压力的10个方法
  3. windows系统上最后一个redis版本Redis-x64-3.0.504下载与安装配置
  4. Java中遍历Map的两种方法:keySet和entrySet
  5. Java_Map_遍历取值
  6. JavaScript -- Enumerator
  7. (一)Linux中vi的复制粘贴命令
  8. 如何用sql语句复制一张表
  9. matlab半波整流怎么做,单相半波整流电路matlab仿真..ppt
  10. python 矩阵特征值分解_python3-特征值,特征分解,SVD奇异值分解