SpringMVC 配置 & 初识 & 注解 &重定向与转发
初识
在web.xml 中注册DispatcherServlet

<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 关联一个springmvc配置文件 xxx-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- /匹配所有的请求 不包括.jsp--> <!-- /*匹配所有的请求 包括.jsp--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
在资源包中添加springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 匹配url去处理--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceView"> <!-- 前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀--> <property name="suffix" value=".jsp"/> <!-- 所以到时我们转发的时候只需给核心名字就行,避免写路径--> </bean> <bean id="/hello" class="com.ljm.controller.HelloController"/> </beans>
HelloController类

import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msg","HelloSpringMVC"); mv.setViewName("hello"); //WEB-INF/jsp/hello.jsp return mv; } }
启动失败的话,若是代码无问题 显示404什么的可以看下IDEA的项目发布中,有没有添加lib有关依赖
添加后,在maven里面clean下生命周期 , 重启tomcat 就行
--------------------------------------------------------------------------------------------------------------------------------------------
使用注解开发
web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 关联一个springmvc配置文件 xxx-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- /匹配所有的请求 不包括.jsp--> <!-- /*匹配所有的请求 包括.jsp--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 自动扫描包,指定包下的注解生效,由IOC容器统一管理--> <context:component-scan base-package="com.ljm.controller"/> <!-- 让SpringMVC不处理静态资源 css,js,html,mp3 4--> <mvc:default-servlet-handler/> <!-- 自动完成之前bean的两个实例注入--> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceView"> <!-- 前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀--> <property name="suffix" value=".jsp"/> <!-- 所以到时我们转发的时候只需给核心名字就行,避免写路径--> </bean> </beans>
controller

@Controller //完成之前bean的注册作用 //@RequestMapping("/hello") //@RequestMapping可以作用于类 也可以作用于方法 一般选后者 两者都有的话url地址要叠加 public class HelloController { @RequestMapping("/hello") //真实访问地址 项目名/*/hello public String hello666(Model model){ //封装数据 model.addAttribute("msg","hello anno"); return "jojohello"; //会被视图解析器处理 jsp目录下的jsp文件 } }
JSON格式返回的话用注解可以在类的上面标注@RestController
@ResponseBody //在方法的上面@
两者都不会走视图解析器,而是会直接返回一个字符串
视图(.jsp)可以被复用
重定向与转发
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术