牛客网中级项目学习笔记(一)

牛客中级项目学习:
Controller 解析web请求
Service 业务层
DAO(data access object)数据处理层
database 底层数据库

重定向
代码如下:

 @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和302的区别
301是终究迁移,如果是301,会把信息存入浏览器,下次浏览器访问网址,会直接定位到另一个地方。
301是临时迁移。

Spring IOC
IOC控制反转 spring 体现在代码中就是用依赖注入的方法定义一个service,
不用再Controller层中去创建一个service 能够把实现写在单独的地方,把用到的地方在注入进来,没有初始化顺序,类与类之间的依赖这些烦恼
通过配置互相引入,通过注解方式或者配置文件方式注入类。
两种方式:
一、注解
二、xml配置文件 实现类与类之间的关系

AOP
面向切面,适用于不是特定任务的,所有服务都会用到的任务。
日志业务部门,所有服务需要打log。
需求:所有机器在运行,肯定会调用很多controller的入口,统计每个入口情况,如每个页面打开次数,每次打开时间。现在有很多服务,用log将所有服务切下来。
Spring AOP底层Aspectj
这里写图片描述
代码如下:

@Aspect
@Component
public class LogAspect {
   
    private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);

    @Before("execution(* com.nowcoder.controller.*Controller.*(..))")
    public void beforeMethod(JoinPoint joinPoint) {
        StringBuilder sb = new StringBuilder();
        for (Object arg : joinPoint.getArgs()) {
            sb.append("arg:" + arg.toString() + "|");
        }
        logger.info("before method: " + sb.toString());
    }

    @After("execution(* com.nowcoder.controller.IndexController.*(..))")
    public void afterMethod(JoinPoint joinPoint) {
        logger.info("after method: ");
    }
}

JoinPoint是个包装类,相当于面向切面的交汇点,通过getArgs方法可以获得所有的进入controller的输入参数。
可以在afterMethod和beforeMethod中记录时间,相减就得到了服务的运行时间。 可以做优化,日志统计,报警。

第二节课
数据库字段设计
这里写图片描述

数据库基本操作
MyBatis集成

MyBatis 可以通过注解和xml的方式操作数据库,只关心读取写入,不用关心数据库如何连接的。
xml方式操作数据库比注解的好处是可以进行逻辑复杂的操作
MyBatis框架的好处,只关注sql语句获取数据,

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值