当前位置: 萬仟网 > IT编程>软件设计>面向对象 > springMVC框架 对BaseCtrl封装,简化开发

springMVC框架 对BaseCtrl封装,简化开发

2018年09月21日  | 萬仟网IT编程  | 我要评论
让你的项目有对象,你的项目如何才会有面向对象特征呢?没有面向对象特征的项目不是好项目哦。此篇博文会使用到面向对象特征中的封装继承,还有就是枚举类型。这篇博文教你如何让你的项目体现面向对象特征。 最近公司需要做一个后台系统,做了几个月了老系统的维护更新,真心有点受不了,毕竟一个项目经过了几个人的手,每 ...

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

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

 

 

主题开始!!

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

public string index(httpservletrequest request) 添加request接口,

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

 1,basectrl类的编写

 1 package cc.royao.mana.ctrl.base;
 2 
 3 import java.util.map;
 4 
 5 import javax.servlet.http.httpservletrequest;
 6 import javax.servlet.http.httpservletresponse;
 7 import javax.servlet.http.httpsession;
 8 
 9 import org.springframework.web.bind.annotation.modelattribute;
10 
11 import com.alibaba.fastjson.jsonobject;
12 
13 import cc.royao.common.constants;
14 import cc.royao.mana.auth.model.manager;
15 import cc.royao.mana.auth.model.tsmember;
16 
17 /**
18  * 控制器基础类
19  * @author 朱孝辉
20  *
21  */
22 public class basectrl {
23 
24     //region httprequest response session
25     protected httpservletrequest request;
26     
27     protected httpservletresponse response;
28     
29     protected httpsession session;
30     
31     // 登入用户
32     protected manager tsmember;
33     
34     // 前端传来的参数
35     protected map<string, object> params; 
36     /**
37      * 说明:@modelattribute的作用
38         1)放置在方法的形参上:表示引用model中的数据
39         2)放置在方法上面:表示请求该类的每个action前都会首先执行它,也可以将一些准备数据的操作放置在该方法里面。
40      * @param request
41      * @param response
42      */
43     @modelattribute
44     public void setreqandres(httpservletrequest request, httpservletresponse response){
45         this.request = request;
46         this.response = response;
47         this.session = request.getsession();
48         this.params = jsonobject.parseobject(request.getparameter("map"));// 前端传map对象(是转了json字符串的对象哦)到后台,得到json字符串最后转json对象返回给map
49         this.tsmember = (manager) this.session.getattribute(constants.session_userinfo);//constants.session_userinfo 为保存用户session的key
50     }
51     protected string getip(httpservletrequest request) { //得到请求用户的ip地址
52         string ip = request.getheader("x-forwarded-for");
53         if (ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
54             ip = request.getheader("proxy-client-ip");
55         }
56         if (ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
57             ip = request.getheader("wl-proxy-client-ip");
58         }
59         if (ip == null || ip.length() == 0 || "unknown".equalsignorecase(ip)) {
60             ip = request.getremoteaddr();
61         }
62         return ip;
63 
64     }
65 }

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

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

 

 1 @controller
 2 @requestmapping("/wallet")
 3 @suppresswarnings("rawtypes")
 4 public class walletctrl extends basectrl implements basecontroller{
 5     
 6     private final logger logger = logger.getlogger(this.getclass()); //logger打印日志文件 ,log对象请使用 private final 修饰哦
 7     
 8     /**
 9      * 首页
10      */
11     @override
12     @requestmapping("/index.htm")
13     public string index() {
14         system.out.println(request);
15         system.out.println(response);
16         system.out.println(request.getsession().getattribute(constants.session_userinfo));
17         return "walletmanage/wallet/list";
18     }

 

 

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

 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

  • 入门篇 第1章 初始Python

    入门篇 第1章 初始Python 1.1 Pyhton 概述 1.1.1 了解 Python Python,本义是指“蟒蛇”。1989年,荷兰人Gu... [阅读全文]
  • OO UNIT 2 个人总结

    OO UNIT 2 个人总结

    第二单元面向对象作业——性感电梯在线吃人 Part 1:单部可捎带电梯 多线程设计策略 本次电梯仅仅只有一部运行,因此,在多线程的设计中难度不大,并且,... [阅读全文]
  • 什么样的代码称得上是好代码?

    朋友指着自己写的代码问:你看我的代码写的怎么样,有没有问题,哪里需要修改? 以最宽松的标准讲,只要代码没有逻辑错误,没有严重性能问题,就没有问题,但... [阅读全文]
  • __str__,__repr__

    __str__,__repr__

    [TOC] \_\_str\_\_ 打印时触发 {'a': 1} obj和dic都是实例化的对象,但是obj打印的是内存地址,而dic打印的是有用的... [阅读全文]
  • Java代码优化实践

    1. 尽量指定类的final修饰符 带有final修饰符的类是不可派生的。指定一个类为final,则该类所有方法都是final。Java编译器会会找... [阅读全文]
  • 面型对象之匿名对象

    匿名对象的概念: 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。 格式: 创建一个普通对象 创建一个匿名对象 匿名对... [阅读全文]
  • springmvc注解@Controller和@RequestMapping

    Spring从2.5版本引入注解,从而让开发者的工作变得非常的轻松 springmvc注解Controller org.springframewor... [阅读全文]
  • 基础知识---委托和 lambda

    委托定义类型,类型指定特定方法签名。 可将满足此签名的方法(静态或实例)分配给该类型的变量,然后(使用适当参数)直接调用该方法,或将其作为... [阅读全文]
  • java 入门如何设计类

    2019/12/24 | 在校大二上学期 | 太原科技大学 初学java后,我们会发现java难点不在于Java语法难学,而是把我们挂在了如何设计类... [阅读全文]
  • 理解依赖注入和控制反转

    理解依赖注入和控制反转

    从一个任务开始讲 某天,公司领导找到开发人员,说要开发一个微信支付宝的收款明细获取功能,我们把这个任务作为一个案例进行说明。 第一步:设计 案例精简... [阅读全文]
验证码:
Copyright © 2017-2020  萬仟网 保留所有权利. 粤ICP备17035492号-1