Velocity模板语法(类似Java语法)
$!{ 变量/表达式 }
## 注释 ## #* 多行注释 *#
for
#foreach ($color in $colors)
Color$!{foreach.count}/${foreach.index}:$!{color}
#end
默认目录:templates
文件:xxx.vm
属性访问
$!{user.name}
$!{user.getName()}
HttpServletResponse
response.addCookie(new Cookie(key, value));
response.addHeader(key, value);
HttpServletRequest
request.getHeaderNames();
request.getMethod()
request.getPathInfo()
request.getQueryString()
@RequestMapping(value = {"/response"})
@ResponseBody
public String response(@CookieValue(value = "nowcoderid", defaultValue = "a") String nowcoderId,
@RequestParam(value = "key", defaultValue = "key") String key,
@RequestParam(value = "value", defaultValue = "value") String value,
HttpServletResponse response) {
response.addCookie(new Cookie(key, value));
response.addHeader(key, value);
return "NowCoderId From Cookie:" + nowcoderId;
}
重定向
301:永久转移
302:临时转移
@RequestMapping("/redirect/{code}")
public String redirect(@PathVariable("code") int code,
HttpSession session) {
/*
RedirectView red = new RedirectView("/", true);
if (code == 301) {
red.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
}
return red;*/
session.setAttribute("msg", "Jump from redirect.");
return "redirect:/";
}
redirect前缀,跳到首页,默认是302跳转。
从一个页面跳到另一个页面,所有的访问都是同一个HttpSession,可以在redirect中添加session的一些特性,返回到首页的时候,把session的信息读取出来,显示在首页。用户体验较好。
301是永久迁移,如果是301,会把信息存入浏览器,下次浏览器访问网址,会直接定位到另一个地方。
301是临时迁移。
AOP
面向切面,所有业务都要处理的业务
@Aspect
@Component
public class LogAspect {
private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
@Before("execution(* com.nowcoder.controller.IndexController.*(..))")
public void before(JoinPoint joinPoint) {
StringBuffer sb = new StringBuffer();
for (Object arg : joinPoint.getArgs()) {
sb.append("arg:" + arg.toString());
}
logger.info("before method:" + sb.toString());
}
@After("execution(* com.nowcoder.controller.*Controller.*(..))")
public void after(JoinPoint joinPoint) {
logger.info("after method:");
}
}
JoinPoint是个包装类,相当于面向切面的交汇点,通过getArgs方法可以获得所有的进入controller的输入参数
ViewObject:方便传递任何数据到Velocity
DateTool:velocity自带工具类导入
public class ViewObject {
private Map<String, Object> objs = new HashMap<String, Object>();
public void set(String key, Object value) {
objs.put(key, value);
}
public Object get(String key) {
return objs.get(key);
}
}