头条资讯项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35508033/article/details/89380838

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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35508033/article/details/89380838