Java控制器层_Controller 层实现

一、实验介绍

1.1 实验内容

本节课程主要利用 Spring MVC 框架实现 Controller 层以及一些辅助类的实现。

1.2 实验知识点

Spring MVC 框架

1.3 实验环境

JDK1.8

Eclipse JavaEE

二、实验步骤

在项目 hrms 的目录 src/main/java 下新建包 com.shiyanlou.controller,作为 Controller 层的包,新建包 com.shiyanlou.util,作为辅助类的包,这些辅助类是为了使 Controller 层的代码更好维护,以及实现一些其他功能。

2.1 辅助类的实现

2.1.1 DateUtil 类

在包 com.shiyanlou.util 下建一个辅助类 DateUtil,其中的 getDate() 方法的作用是返回格式化的当前日期,代码如下:

package com.shiyanlou.util;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateUtil {

public static Date getDate() throws ParseException{

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

return sdf.parse(sdf.format(date));

}

}

2.1.2 JsonDateValueProcessor 类

在包 com.shiyanlou.util 下建一个辅助类 JsonDateValueProcessor,其作用是将日期转化使之能在 easyUI 的 datagrid 中正常显示,代码如下:

package com.shiyanlou.util;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

public class JsonDateValueProcessor implements JsonValueProcessor {

private String format ="yyyy-MM-dd";

public JsonDateValueProcessor() {

super();

}

public JsonDateValueProcessor(String format) {

super();

this.format = format;

}

@Override

public Object processArrayValue(Object paramObject,

JsonConfig paramJsonConfig) {

return process(paramObject);

}

@Override

public Object processObjectValue(String paramString, Object paramObject,

JsonConfig paramJsonConfig) {

return process(paramObject);

}

private Object process(Object value){

if(value instanceof Date){

SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);

return sdf.format(value);

}

return value == null ? "" : value.toString();

}

}

2.1.3 ResponseUtil 类

在包 com.shiyanlou.util 下建一个辅助类 ResponseUtil,其 write() 方法的作用是将用 HttpServletResponse 返回前台 JSON 格式数据,同时减少 Controller 层代码的冗余,代码如下:

package com.shiyanlou.util;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

public class ResponseUtil {

public static void write(HttpServletResponse response, Object o)

throws Exception {

response.setContentType("text/html;charset=utf-8");

response.addHeader("Access-Control-Allow-Origin", "*");

PrintWriter out = response.getWriter();

out.println(o.toString());

out.flush();

out.close();

}

}

2.1.4 IntegrateObject 类

在包 com.shiyanlou.util 下建一个辅助类 IntegrateObject,其 genericAssociation() 方法的作用是完成 Employee 与 Department, Position 对象的关联映射,代码如下:

package com.shiyanlou.util;

import com.shiyanlou.domain.Department;

import com.shiyanlou.domain.Employee;

import com.shiyanlou.domain.Position;

public class IntegrateObject {

/**

* 由于部门和职位在 Employee 中是对象关联映射,

* 所以不能直接接收参数,需要创建 Department 对象和 Position 对象

* */

public static void genericAssociation(Integer dept_id,Integer pos_id,Employee employee){

Department department = new Department();

department.setId(dept_id);

Position position = new Position();

position.setId(pos_id);

employee.setDepartment(department);

employee.setPosition(position);

}

}

2.2 Controller 层代码实现

2.2.1 AdminController

在包 com.shiyanlou.controller 下新建一个类 AdminController,代码如下:

package com.shiyanlou.controller;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import com.shiyanlou.domain.Admin;

import com.shiyanlou.service.AdminService;

import com.shiyanlou.util.ResponseUtil;

/**类中的所有响应方法都被映射到 /admin 路径下

*

* @author shiyanlou

*

*/

@Controller

@RequestMapping("/admin")

public class AdminController {

// 自动注入 adminService

@Resource

private AdminService adminService;

/** 处理登录请求

*

* @param admin

* @param request

* @param session

* @return

*/

@RequestMapping("/login")

public String login(Admin admin, HttpServletRequest request,

HttpSession session) {

Admin resultAdmin = adminService.login(admin);

// 如果该登录的管理员用户名或密码错误返回错误信息

if (resultAdmin == null) {

request.setAttribute("admin", admin);

request.setAttribute("errorMsg",

"Please check your username and password!");

return "login";

} else {

// 登录成功, Session 保存该管理员的信息

session.setAttribute("currentAdmin", resultAdmin);

session.setAttribute("username", resultAdmin.getUsername());

return "redirect:main";

}

}

/**处理跳转至主页请求

*

* @param model

* @return

* @throws Exception

*/

@RequestMapping(value="

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值