Spring入门和模板语法

1、java的工程目录html

pom.xml:工程的依赖包和对工程的说明java

templates:放一些模板spring

static:放一些网站须要的静态服务器

 

2、网站的简单分层cookie

controller与service之间,随着工程的变大,会有一个base层session

 

 3、简单的测试app

建立一个controller文件函数

@Controller:表示这是一个controller测试

@RequestMapping:对访问的映射地址进行设置网站

@ResponseBody:由于返回的是一个字符串,因此要说明response是一个body

 最后在ToutiaoApplication处进行运行

网站的地址也能够设置多个:

@RequestMapping(path = {"/","index"})

 

指定参数:

@PathVariable:表示是@RequestMapping处的参数

@RequestParam表示是地址?后的参数

效果图:

 

 开发的时候,通常使用模板,templates

 

 

4、关于使用thymeleaf 模板语言

详情:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#maps

 

5、request、response

1.request

    @RequestMapping(value = {"/request"})
    @ResponseBody
    public String request(HttpServletRequest request,
                          HttpServletResponse response,
                          HttpSession session) {
        StringBuilder sb = new StringBuilder();
        Enumeration<String> headerNames = request.getHeaderNames();         //显示reques中Header
        while (headerNames.hasMoreElements()) {
            String name = headerNames.nextElement();
            sb.append(name + ":" + request.getHeader(name) + "<br>");
        }

        for (Cookie cookie : request.getCookies()) {                     //显示cookie
            sb.append("Cookie: ");
            sb.append(cookie.getName());
            sb.append(":");
            sb.append(cookie.getValue());
            sb.append("<br>");
        }

        sb.append("getMethod: " + request.getMethod() + "<br>");                   //其余一些内容显示
        sb.append("getPathInfo: " + request.getPathInfo() + "<br>");
        sb.append("getQueryString:" + request.getQueryString() + "<br>");
        sb.append("getRequestURI:" + request.getRequestURL() + "<br>");
        return sb.toString();
    }

 

效果图

2.response

    @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;
    }
response.addCookie(new Cookie(key,value));//会将nowcoderid写入

 

 6、重定向

301:永久转移                 //第二次就直接请求服务器的跳转页

302:临时转移

    @RequestMapping("/redirect/{code}")
    public RedirectView redirect(@PathVariable("code") int code){
        RedirectView red = new RedirectView("/",true);
        if(code == 301){
            red.setStatusCode(HttpStatus.MOVED_PERMANENTLY);          //设置成永久性跳转

        }
        return red;
    }

第二种方法:(永远302跳转)

    @RequestMapping("/redirect/{code}")
    public String redirect(@PathVariable("code") int code){

        return "redirect:/";
    }

}

 

 

7、错误处理

    @RequestMapping(value = {"/admin"})
    @ResponseBody
    public String admin(@RequestParam(value = "key", required = false) String key) throws IllegalAccessException {
        if ("admin".equals(key)) {
            return "Hello admin!";
        }
        throw new IllegalAccessException("Key error");
    }

    @ExceptionHandler                               //自定义错误处理函数
    @ResponseBody
    public String error(Exception e) {
        return "error: " + e.getMessage();
    }

效果图

1.出错页

2.成功页

 

 

8、Spring IOP AOP

参考网站:https://docs.spring.io/spring/docs/current/spring-framework-reference/

IOP

 

 例子IOP

1.建立service文件,ToutiaoService

 

@Service
public class ToutiaoService {
    public String say(){
        return "This is from ToutiaoService.";
    }
}

在controller文档使用,我用的是IndexController

 

 

 

2.AOP

底层其实用的是:Aspectj

举例:

1.建立文件LogAspect 

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

    @Before("execution(* com.nowcoder.toutiao.controller.IndexController.*(..))")           //对使用此切面的范围,进行划分
    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.toutiao.controller.IndexController.*(..))")
    public void afterMethod(JoinPoint joinPoint) {
        logger.info("after method");
    }
}

在访问范围内的网页后:

 

相关文章
相关标签/搜索