package xyz.wbsite.dbtool.web.controller;
import xyz.wbsite.dbtool.web.framework.utils.LogUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
@Controller
@ControllerAdvice
public class GlobalController {
/**
* 全局异常捕捉
*
* @param request
* @param response
* @param exception 要捕获的异常
* @return
*/
@ExceptionHandler(Exception.class)
public String excepitonHandler(HttpServletRequest request, HttpServletResponse response, Model model, Exception exception) {
StringBuffer msg = new StringBuffer("");
if (exception != null) {
msg = new StringBuffer("");
String message = exception.toString();
int length = exception.getStackTrace().length;
if (length > 0) {
msg.append("").append(message).append("
");
for (int i = 0; i < length; i++) {
msg.append("").append(exception.getStackTrace()[i]).append("
");
}
} else {
msg.append(message);
}
}
model.addAttribute("msg", msg.toString());
return "500";
}
/**
* 当未明确指定控制器时,走该请求,默认返回对应的layout布局和screen视图
*
* @param model
* @param request
*/
@RequestMapping("**^\\.*")
public void hold(HttpServletRequest request, HttpServletResponse response, Model model) {
LogUtil.i("未明确指定控制器访问路径:" + request.getRequestURI());
//todo 可在此获取公共部分数据,例如用户信息等。其他业务数据在页面渲染后通过Ajax请求
}
/**
* 当需要使用layout时,不需要返回值,ViewNameTranslator会处理对应关系
*
* @param model
* @param request
*/
@RequestMapping({"/", "index"})
public void index(Model model, HttpServletRequest request) throws Exception {
model.addAttribute("hello", "Hello world!!!");
model.addAttribute("status", 0);
ArrayList citys = new ArrayList<>();
citys.add("北京");
citys.add("上海");
citys.add("深圳");
model.addAttribute("citys", citys);
}
}