标签:set pst cat style return 映射 lse maps dir
一、java的工程目录

pom.xml:工程的依赖包和对工程的说明
templates:放一些模板
static:放一些网站需要的静态
二、网站的简单分层

controller与service之间,随着工程的变大,会有一个base层
三、简单的测试
创建一个controller文件

@Controller:表示这是一个controller
@RequestMapping:对访问的映射地址进行设置
@ResponseBody:因为返回的是一个字符串,所以要说明response是一个body
最后在ToutiaoApplication处进行运行


网站的地址也可以设置多个:
@RequestMapping(path = {"/","index"})
指定参数:
@PathVariable:表示是@RequestMapping处的参数
@RequestParam表示是地址?后的参数

效果图:

开发的时候,一般使用模板,templates
 

四、关于使用thymeleaf 模板语言
详情:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#maps
五、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写入
六、重定向
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:/";
    }
}
七、错误处理
    @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.成功页
 
八、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"); } }
在访问范围内的网页后:


标签:set pst cat style return 映射 lse maps dir
原文地址:https://www.cnblogs.com/zxj-262410/p/10879882.html