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

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

    漏洞分析的边界 漏洞分析最应该关注的是漏洞相关的代码,至于其余的代码可以通过关键位置下断点,来理解大概功能. 其中最关键的就是了解数据流,找到离漏洞位置最近的 原始数据 经过的位置,然后开始往下分析, ...

  2. include方便查找

    #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#inc ...

  3. [翻译] PTEHorizontalTableView

    PTEHorizontalTableView Horizontal UITableView inspired by EasyTableView. 水平滚动的UITableView,灵感来自于EasyT ...

  4. POST请求上传多张图片并携带参数

    POST请求上传多张图片并携带参数 在iOS中,用POST请求携带参数上传图片是非常恶心的事情,HTTPBody部分完全需要我们自己来配置,这个HTTPBody分为3个部分,头部分可以携带参数,中间部 ...

  5. 制作动态logo教程

    本人从事iOS开发工作,但对特效制作很感兴趣,现提供一份教程,制作本人logo的教程. 上图是用 Photoshop 与 After Effects 与 GIF Movie Gear 合力制作的动态图 ...

  6. .net 和 core 数据库连接字符串

    Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-xxxx.mdf;Initial Catalog= ...

  7. IP地址编址

    比特:一比特就是一个数字,1或者0. 字节:以字节是7比特或者8比特,取决于是否使用奇偶校验 八位组:8比特构成 网络地址:用来将数据包发送到远端网路 比如10.0.0.0 广播地址:将信息发送给网络 ...

  8. [2018HN省队集训D1T3] Or

    [2018HN省队集训D1T3] Or 题意 给定 \(n\) 和 \(k\), 求长度为 \(n\) 的满足下列条件的数列的数量模 \(998244353\) 的值: 所有值在 \([1,2^k)\ ...

  9. Ubuntu 配置Mysql远程连接

    首先安装mysql.mysqlclient sudo apt-get install mysql-server mysql-clientsudo apt-get install libmysqlcli ...

  10. UI(一)

    1.AfxWinMain 首先,MFC程序先执行到TheApp实例化对象也就是通过这句CTestApp the App来实例化对象的然后,调用CTestApp构造函数分配内存空间 然后,就调用了Afx ...