SpringMVC 简单的开始
SpringMVC简单的开始
利用Spring模板配置写一个web项目。
1.核心配置文件(模板代码)
<?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的配置文件--> <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>
2.spring配置文件
<?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"> <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="InternalResourceViewResolver"> <!-- 前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <bean id="/h1" class="com.lian.HelloServlet"/> </beans>
3.写Servlet类HelloController
public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // ModelAndView模型和视图 ModelAndView mv=new ModelAndView(); //封装对象,放在 ModelAndView中 mv.addObject("msg","HelloSpringMVC!!"); //封装要跳转的视图,放在 ModelAndView中 mv.setViewName("hello");///WEB-INF/jsp/hello.jsp return mv; } }
写这个例子的时候要跳转到 /h1 页面时候报404错误
查看了project Structure发现是项目的lib包没进来
要保证项目需要的包都导入了
执行原理分析:
1.用户发送请求request,被DispatcherServlet拦截,DispatcherServlet是前置控制器,DispatcherServlet通过关联一个springmvc的配置文件来处理请求;
2.在配置文件springmvc中加载处理器映射器BeanNameUrlHandlerMapping,这个处理器会自动适配拥有id的bean标签,执行结果返回给DispatcherServlet
3.DispatcherServlet加载处理器适配器SimpleControllerHandlerAdapter,这个适配器会找到bean标签的class属性对应的方法类所在位置,这个例子中是class=“com.lian.HelloController”,这个方法类就是我们说的Controller,里面是我们日常写的业务逻辑,将业务处理结果一步步返回,最终回到DispatcherServlet
4.DispatcherServlet调用视图解析器InternalResourceViewResolver,解析器将Controller里面要返回的jis文件的名字拿到,然后拼接成jsp页面的完整路径,解析器执行结束会返回一个view(是InternalResourceView类的实例)给DispatcherServlet
5.DispatcherServlet将拿到的view响应给前端页面
原理图:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术