springMVC基础controller类
此文章是基于 搭建SpringMVC+Spring+Hibernate平台
功能:设置请求、响应对象;session、cookie操作;ajax访问返回json数据;
创建springMVC基础controller类:
BaseController.java
package com.ims.web.controller;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.http.Cookie;
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.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class BaseController {
/**
* AJAX访问返回操作成功状态标识符
*/
protected static final String STATUS_SUCCESS = "success";
/**
* AJAX访问返回操作失败状态标识符
*/
protected static final String STATUS_ERROR = "error";
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session;
/**
* 每个controller方法执行前被执行
*/
@ModelAttribute
public void setReqAndRes(HttpServletRequest request,
HttpServletResponse response) {
this.request = request;
this.response = response;
this.session = request.getSession();
}
/**
* 取得session中的值
* @param name session主键
* @return 主键对应的值
*/
public Object getSession(String name) {
return session.getAttribute(name);
}
/**
* 往session中添加键值对
* @param name session主键
* @param obj session值
*/
public void setSession(String name, Object obj) {
session.setAttribute(name, obj);
}
/**
* 添加cookie
* @param key cookie主键
* @param value cookie值
*/
public void addCookie(String key, String value){
Cookie cookie = new Cookie(key, value);
cookie.setPath("/");// 这个要设置
cookie.setMaxAge(60*60*24*30);//保留一个月 以秒为单位
response.addCookie(cookie);
}
/**
* 删除cookie
* @param key cookie主键
*/
public void deleteCookie(String key){
Cookie cookies[] = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals(key)) {
Cookie cookie = new Cookie(key,null);
cookie.setPath("/");//设置成跟写入cookies一样的
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}
}
/**
* 取得cookie的值
* @param key cookie主键
*/
public String getCookieValue(String key) {
String cookieVal = null;
for(Cookie cookie : request.getCookies()){
if (cookie.getName().equals(key)) {
try {
cookieVal = URLDecoder.decode(cookie.getValue(), "UTF-8");
} catch (Exception e) {}
break;
}
}
return cookieVal;
}
/**
* 取得访问项目的url
*/
public String getBaseUrl(){
return request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath() ;
}
/**
* ajax输出
* @param content 输出的文本内容
* @param type 输出的文本类内容
*/
public void ajax(String content, String type) {
try {
response.setContentType(type + ";charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.getWriter().write(content);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 响应json格式的字符串
* @param content json格式的字符串
*/
public void ajax(String content) {
ajax(content, "application/json");
}
/**
* 响应带状态的json格式的数据
* @param status
* @param content
*/
public void ajaxJson(String status, Object content){
String json = "{\"status\" : \""+status+"\", " +
"\"message\" : "+JSON.toJSONString(content)+" }";
ajax(json, "application/json");
}
/**
* 响应json格式的数据
* @param content
*/
public void ajaxJson(Object content) {
String json = JSON.toJSONString(content, SerializerFeature.WriteDateUseDateFormat);
ajax(json, "application/json");
}
}
springMVC基础controller类的更多相关文章
- SpringMVC中Controller类的方法返回String不跳转,而是将字符串显示到页面
问题描述: 在spring中,控制层的注解一般都是使用@Controller,如果哪个请求参数需要返回数据的话,我们可以在该方法上配合@ResponseBody注解使用,这也是比较常见的方式了. 今天 ...
- SpringMVC基础-controller方法中的参数注解
@PathVariable 映射 URL 绑定的占位符 带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义 通过 ...
- 以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewControllers方法即可达到效果了
以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewC ...
- SpringMVC中在Controller类的每个方法执行前调用某个方法的实现
在使用SpringMVC做项目的时候,如果想在@Controller类中每个@RequestMapping方法执行前都调用某个方法,要怎么实现呢?答案是使用Spring的@ModelAttribute ...
- SpringMVC基础入门
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
- SpringMVC自动扫描@Controller注解的bean
若要对@Controller注解标注的bean进行自动扫描,必须将<context:component-scan base-package="包路径.controller"/ ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- SpringMVC之Controller和参数绑定
在上一篇Spring+SpringMVC+Mybatis整合中说到了SSM的整合,并且在其中添加了一个简单的查询功能,目的只是将整个整合的流程进行一个梳理,下面在上一篇中工程的基础上再说一些关于Spr ...
- SpringMVC框架02——SpringMVC的Controller详解
1.基于注解的控制器 1.1.@Controller 注解类型 在SpringMVC中使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个 ...
随机推荐
- 获取当前方法名,行号,类名,所在java文件第几行
public class Demo { public static void main(String[] args) { Demo demo = new Demo(); demo.go(); } pu ...
- CSS魔法堂:重拾Border之——解构Border
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- Javascript 如何生成Less和Js的Source map
为什么有Source map CSS和JS脚本正变得越来越复杂,为了解决网络瓶颈,大部分源代码都需要经过编译.合并.压缩才能运用到实际环境中.为了减少网络资源占用,源码一般都会经过以下方式处理: 使用 ...
- WinForm 代码实现以管理员身份运行
[STAThread] static void Main(string[] Args) { //获得当前登录的Windows用户标示 System.Security.Principal.Windows ...
- [Asp.net 5] Logging-新日志系统目录
楼主有个美好的愿望——把asp.net 5所有能看懂的代码一一呈现给大家(比如C++,楼主就看不懂).现在已经做完了依赖注入.多语言.配置文件三部分,比较基础的日志就成为了楼主的下一个目标.下面是楼主 ...
- FTP工具类开发
正所谓工欲善其事必先利其器,熟悉了下一套流程,以此铭记. 1.FTP服务搭建 由于本人使用wondiow系统,所以针对window的童鞋们可以查看.至于windowX这里配置类似,所以不要纠结于win ...
- ExtJS关于组件Component生命周期
extjs组件生命周期大体分为3个阶段:初始化.渲染.销毁. 第一阶段:初始化 初始化工作开始于组件的诞生,所有必须的配置设定.事件注册.预渲染处理等都在此时进行. 1.应用组件的配置: 当初始化一个 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 5.串口和网络统一IO设计
目 录 第五章 串口和网络统一IO设计... 2 5.1 统一IO接口... 2 5.1.1 串口IO.. 4 5.1.2 网络IO.. ...
- MongoDB主从复制(主从集群 )
1.简介 主从复制是MongoDB最常用的复制方式.这种方式非常灵活,可用于备份.故障恢复.读扩展等. 最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址.运行mon ...
- 让T4脱离VS生成代码
让T4脱离VS生成代码 最近项目快结束:空闲时间相对多一点:为了以后工作方便点:索性研究了VS的T4: 写个代码生成器:以后可以通过代码生成器调用项目里面的Dll直接生成代码或者xml: 应用以下两个 ...