让你的项目有对象,你的项目如何才会有面向对象特征呢?没有面向对象特征的项目不是好项目哦。此篇博文会使用到面向对象特征中的封装继承,还有就是枚举类型。这篇博文教你如何让你的项目体现面向对象特征。

  最近公司需要做一个后台系统,做了几个月了老系统的维护更新,真心有点受不了,毕竟一个项目经过了几个人的手,每个人的代码风格都不一样,然后觉得花段时间对老架构进行优化封装,本人做事一般喜欢先开始把准备工作做好,“磨刀不误砍柴工”  是我做事一向的风格,喜欢带着匠心精神去做某件事这样才会有更大的进步,带着“如何写优质的代码?”“如何优化程序的性能”的心去写代码,在公司实现个人价值。做个个精致的人,做个猪猪男孩【滑稽】。项目遵循阿里巴巴java开发手则哦

主题开始!!

问题:使用springmvc 视图框架,有个很麻烦的地方就是,我们需要request和response 对象时我们就需要在方法参数栏中

public String index(HttpServletRequest request) 添加request接口,

作者觉得这样很麻烦,还有就是我想从session对象中读取登入用户,就需要写一条很长的代码,鄙人心里一万个mmp。

1,BaseCtrl类的编写

 package cc.royao.mana.ctrl.base;

 import java.util.Map;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.web.bind.annotation.ModelAttribute; import com.alibaba.fastjson.JSONObject; import cc.royao.common.Constants;
import cc.royao.mana.auth.model.Manager;
import cc.royao.mana.auth.model.TsMember; /**
* 控制器基础类
* @author 朱孝辉
*
*/
public class BaseCtrl { //region HttpRequest Response Session
protected HttpServletRequest request; protected HttpServletResponse response; protected HttpSession session; // 登入用户
protected Manager tsMember; // 前端传来的参数
protected Map<String, Object> params;
/**
* 说明:@ModelAttribute的作用
1)放置在方法的形参上:表示引用Model中的数据
2)放置在方法上面:表示请求该类的每个Action前都会首先执行它,也可以将一些准备数据的操作放置在该方法里面。
* @param request
* @param response
*/
@ModelAttribute
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response){
this.request = request;
this.response = response;
this.session = request.getSession();
this.params = JSONObject.parseObject(request.getParameter("map"));// 前端传map对象(是转了json字符串的对象哦)到后台,得到json字符串最后转json对象返回给Map
this.tsMember = (Manager) this.session.getAttribute(Constants.SESSION_USERINFO);//Constants.SESSION_USERINFO 为保存用户session的key
}
protected String getIp(HttpServletRequest request) { //得到请求用户的ip地址
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip; }
}

当每次请求一个继承了BaseCtrl类的接口类,都会先执行setReqAndRes方法,有兴趣的同学可以去看看@ModelAttribute我上面也写了一些介绍。

这样我们就不用在接口方法参数栏中写request了,直接使用父类的request的成员变量就行。

 @Controller
@RequestMapping("/wallet")
@SuppressWarnings("rawtypes")
public class WalletCtrl extends BaseCtrl implements BaseController{ private final Logger logger = Logger.getLogger(this.getClass()); //logger打印日志文件 ,log对象请使用 private final 修饰哦 /**
* 首页
*/
@Override
@RequestMapping("/index.htm")
public String index() {
System.out.println(request);
System.out.println(response);
System.out.println(request.getSession().getAttribute(Constants.SESSION_USERINFO));
return "walletManage/wallet/list";
}

这样是不是很方便呢?喜欢的可以点赞哦【比心】

springMVC框架 对BaseCtrl封装,简化开发的更多相关文章

  1. 手写SpringMVC框架(二)-------结构开发设计

    续接前文, 手写SpringMVC框架(一)项目搭建 本节我们来开始手写SpringMVC框架的第二阶段:结构开发设计. 新建一个空的springmvc.properties, 里面写我们要扫描的包名 ...

  2. JAVA框架 Spring 调用jdbcsuport简化开发

    一)使用DAO的jdbcsuport来简化开发 首先来清楚一个概念: 我们在进行配置文件来进行依赖注入的时候,主要是通过set方法来进行设置的. 正常我们使用spring的jdbctemplate的时 ...

  3. 手写SpringMVC框架(三)-------具体方法的实现

    续接前文 手写SpringMVC框架(二)结构开发设计 本节我们来开始具体方法的代码实现. doLoadConfig()方法的开发 思路:我们需要将contextConfigLocation路径读取过 ...

  4. 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

    VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...

  5. SpringMVC框架之第一篇

    2.SpringMVC介绍 2.1.SpringMVC是什么 SpringMVC是Spring组织下的一个表现层框架.和Struts2一样.它是Spring框架组织下的一部分.我们可以从Spring的 ...

  6. SpringMVC框架笔记01_SpringMVC的使用案例和架构组件_SpringMVC和Mybatis整合_接收参数

    目录 第1章:SpringMVC简介 1.1 什么是SpringMVC 1.2 SpringMVC的处理流程 第2章:SpringMVC入门程序 2.1 场景描述 2.2 步骤分析 2.3 步骤一:创 ...

  7. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

    本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...

  8. Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发

    Struts 1基础 为什么重拾Struts 1 曾经是最主流的MVC框架 市场份额依然很大 很多遗留系统中依旧使用 维护和升级都需要熟悉Struts 1 与Struts 2相比 编码.配置繁琐 侵入 ...

  9. Idea搭建SpringMVC框架(初次接触)

    公司转Java开发,做的第一个项目是SpringMVC框架,因为底层是同事封装,等完成整个项目,对SpringMVC框架的搭建还不是很了解,所以抽时间不忙的时候自己搭建了一个SpringMVC框架. ...

随机推荐

  1. MS SQL Server数据库查询优化技巧

    [摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...

  2. maven windows环境nexus3.0私服搭建

    下载 nexus3.x.x 需要JDK1.8版本到sonatype官网下载开源免费的OSS版本,OSS即为Open Source Software.下载地址:https://www.sonatype. ...

  3. 深入理解SVG坐标体系和transformations- viewport, viewBox,preserveAspectRatio

    本文翻译自blog: https://www.sarasoueidan.com/blog/svg-coordinate-systems/ SVG元素不像其他HTML元素一样受css盒子模型所制约.这个 ...

  4. AVAudioPlayer简易封装

    AVAudioPlayer简易封装 [说明] AVAudioPlayer简易封装,仅仅支持播放,暂停,停止,暂停时候带有渐隐效果,自己用,没有参考价值. [源码] https://github.com ...

  5. Linux 系统DNS解析原理

    DNS:域名的解析,也称A记录,CDN服务器   配置文件位置:       vi /etc/resolv.conf 解析原理 DNS就像一个倒挂的树,定点是点. www.baidu.com ==&g ...

  6. 铁乐学Python_Day34_Socket模块2和黏包现象

    铁乐学Python_Day34_Socket模块2和黏包现象 套接字 套接字是计算机网络数据结构,它体现了C/S结构中"通信端点"的概念. 在任何类型的通信开始之前,网络应用程序必 ...

  7. 3-urllib的post请求方式

    在urllib 中,要进行post请求时,需传入相应的data值,这里通过http://www.iqianyue.com/mypost这个网站进行测试. 案例代码如下: #post 请求 import ...

  8. 【模块化】 RequireJS入门教程总结与推荐

    之所以学习RequireJS,肯定对 模块化有一定的理解.这里有几篇学习 RequireJS的文章,推荐给大家去学习. Javascript模块化编程(一):模块的写法 Javascript模块化编程 ...

  9. Programming Assignment 2: Deques and Randomized Queues

    编程作业二 作业链接:Deques and Randomized Queues & Checklist 我的代码:Deque.java & RandomizedQueue.java & ...

  10. Css中路径data用法

    Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入. data:,文本数据 data:text/plain,文本数据 data: ...