springmvc的工作原理是什么

互联网 20-7-4

springmvc的工作原理是:1、浏览器发送请求给DispatcherServlet;2、根据请求找到对应的Controller;3、返回ModelAndView;4、找到对应的视图对象View并渲染;5、返回到浏览器。

SpringMVC工作原理:

(推荐学习:java入门程序)

1、浏览器发送指定的请求都会交给DispatcherServlet,他会委托其他模块进行真正的业务和数据处理;

2、DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller,并将请求交给目标Controller;

3、目标Controller处理完业务后,返回一个ModelAndView给DispatcherServlet;

4、DispatcherServlet通过ViewResolver视图解析器找到对应的视图对象View;

4、视图对象View负责渲染,并返回到浏览器。

(视频教程推荐:java视频教程)

下面我们来看一下代码实例:

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://java.sun.com/xml/ns/javaee"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"     version="2.5">     <display-name>springmvc</display-name>     <welcome-file-list>         <welcome-file>index.html</welcome-file>         <welcome-file>index.htm</welcome-file>         <welcome-file>index.jsp</welcome-file>         <welcome-file>default.html</welcome-file>         <welcome-file>default.htm</welcome-file>         <welcome-file>default.jsp</welcome-file>     </welcome-file-list>     <!-- spring入口 -->     <servlet>         <servlet-name>springmvc</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>         <!-- 项目启动时,就加载并实例化 -->         <load-on-startup>1</load-on-startup>     </servlet>      <!-- 拦截所有不包括jsp的请求 -->     <servlet-mapping>         <servlet-name>springmvc</servlet-name>         <url-pattern>*.do</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:aop="http://www.springframework.org/schema/aop"     xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"     xmlns:mvc="http://www.springframework.org/schema/mvc"     xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc.xsd">          <!-- springmvc注解驱动 -->         <mvc:annotation-driven></mvc:annotation-driven>          <!-- 开启注解扫描 -->         <context:component-scan base-package="cn.itcast.controller"></context:component-scan>          <!-- 配置试图解析器             prefix:指定试图所在目录             suffix:指定视图的后缀名             例如:prifex="/WEB-INF/jsp/",suffix=".jsp",当viewname="test"时,跳转到/WEB-INF/jsp/test.jsp页面          -->         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">             <property name="prefix" value="/WEB-INF/jsp/"></property>             <property name="suffix" value=".jsp"></property>         </bean> </beans>

UserControll类

@Controller @RequestMapping("user") public class UserController {     @RequestMapping("findAllUsers")     public ModelAndView findAllUsers() {         ModelAndView mv = new ModelAndView();         ArrayList<User> users = new ArrayList<User>();         for (int i = 0; i < 5; i++) {             User user = new User();             user.setUsername("zs" + i);             user.setAge(20 + i);             user.setIncome(16000.0+i*100);             user.setIsMarry(false);             user.setHobby(new String[] { "篮球"+i, "足球"+i });             users.add(user);         }         mv.addObject("users", users);         mv.setViewName("users");         return mv;     } }
public class User implements Serializable {      /**      *       */     private static final long serialVersionUID = 1L;      private String username;     private Integer age;     private Boolean isMarry;     private Double income;     private String[] hobby;      public String getUsername() {         return username;     }      public void setUsername(String username) {         this.username = username;     }      public Integer getAge() {         return age;     }      public void setAge(Integer age) {         this.age = age;     }      public Boolean getIsMarry() {         return isMarry;     }      public void setIsMarry(Boolean isMarry) {         this.isMarry = isMarry;     }      public Double getIncome() {         return income;     }      public void setIncome(Double income) {         this.income = income;     }      public String[] getHobby() {         return hobby;     }      public void setHobby(String[] hobby) {         this.hobby = hobby;     }      @Override     public String toString() {         return "User [username=" + username + ", age=" + age + ", isMarry=" + isMarry + ", income=" + income                 + ", hobby=" + Arrays.toString(hobby) + "]";     }  }
<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="/css/user.css" /> </head> <body>     <table id="customers">         <tr>             <th>用户名</th>             <th>年龄</th>             <th>收入</th>             <th>婚姻状态</th>             <th>兴趣爱好</th>         </tr>         <!-- 遍历后台传递的集合数据 -->         <c:forEach items="${users}" var="user">             <tr>                 <td>${user.username}</td>                 <td>${user.age}</td>                 <td>${user.income}</td>                 <!-- 判婚姻状态 -->                 <td><c:choose>                         <c:when test="${user.isMarry}">已婚</c:when>                         <c:otherwise>未婚</c:otherwise>                     </c:choose>                 </td>                  <td>                 <!-- 再次遍历用户爱好 -->                 <c:forEach items="${user.hobby}" var="hobby" varStatus="status">                     ${hobby}                      <!-- 如果不是最后一个爱好,则加上逗号,否则就不加 -->                     <c:if test="${!status.last}">,</c:if>                 </c:forEach>                 </td>             </tr>         </c:forEach>     </table> </body> </html>

以上就是springmvc的工作原理是什么的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 工作原理
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:自学java到什么水平能够工作?

相关资讯