SpringMVC
2021-03-03 16:27
标签:tco app 重定向 load link put 传统 ppc https 简要分析执行流程 DispatcherServlet表示前端控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。 我们假设请求的url为 : http://localhost:8080/SpringMVC/hello 如上url拆分成三部分: http://localhost:8080服务器域名 SpringMVC部署在服务器上的web站点 hello表示控制器 通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。 HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。(在还没有用注解开发时,最开始会在xml中配置handler) HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。 HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。 HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。 Handler让具体的Controller执行。 Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。 HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。 DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。 视图解析器将解析的逻辑视图名传给DispatcherServlet。 DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。 最终视图呈现给用户。 第一种方式 1、在web.xml中配置前端控制器 2、springmvc-servlet.xml 1、在web.xml中配置前端控制器,与第一种方式的一样 2、springmvc-servlet.xml 这个是传统的url地址 http://localhost:8080/index/user/add?a=1&b=2 restful风格的url http://localhost:8080/user/mult/1/2 @RequestMapping(value = "/mult/{a}/{b}",method = RequestMethod.GET)相当于是Get方法的restFul请求 restFul接口请求分类 SpringMVC中我们可以直接return "页面名",然后根据视图解析器进行拼接成为要访问的页面。 在没有配置视图解析器时,就要自己配置访问的路径return "/WEB-INFO/jsp/xx" 但是地址栏的url并没有改变,所以这个操作就是转发,也可以写为return "forward: /WEB-INFO/jsp/xx"。 在配置了视图解析器时,这个return "页面名" 相当于 return "forword : 页面名",当然也可以用重定向 return "redirect: 页面名" 但是它不会走视图解析器,而且还不能访问WEB-INFO下的页面。 WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。 页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html。 (1)构建web项目中webapp没有小蓝点,需要在project structure中设置。 在这里将webapp的路径,正确的填入。 这时就成为了完整的web项目。 (2)启动项目时Tomcat报错 Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext" 这是因为在pom.xml文件中导入servlet坐标时没有设置好作用域
这样就好了,成功解决问题。
SpringMVC 标签:tco app 重定向 load link put 传统 ppc https 原文地址:https://www.cnblogs.com/sc19/p/14391629.htmlSpringMVC的执行流程
配置SpringMVC的步骤
第二种方式RestFul风格
@Controller
@RequestMapping("/user")
public class RestFulController {
@RequestMapping("/add")
public String add( Integer a, Integer b, Model model){
int result = a + b;
model.addAttribute("msg","结果为"+result);
System.out.println(result);
return "add";
}
}
@RequestMapping(value = "/mult/{a}/{b}",method = RequestMethod.GET)
public String mult( @PathVariable("a") Integer a, @PathVariable("b") Integer b, Model model){
int result = a + b;
model.addAttribute("msg","结果为"+result);
System.out.println(result);
return "add";
}
可以简写@GetMapping("/mult/{a}/{b}")
get、post、put、delete、patch
同理这些请求提交方式也都有相应的注解为什么redirect重定向不能访问WEB-INF目录下的内容?
原因
既然WEB-INF是安全目录,客户端无法访问,而重定向就相当于用户直接从客户端访问了的路径,自然就不可以啦,只有程序内部转发的时候才能转发到WEB-INF下的JSP。遇到的问题