MVC的理解
MVC作为常用的分层架构,它并不是一种框架,但它可以说是一种架构模式。
常用的MVC分为三层:即M(模型层),V(视图层),C(控制层)
模型层:含有数据和行为,比如存取数据,数据逻辑等等(如dao层、service层、vo层)
视图层:将后台返回来的结果呈现给用户(如JSP
控制层:控制页面的跳转(如action层)
流程大概如下:
1.用户输入
2.控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理
3.控制器决定调用哪个模型构件去处理请求,就比如action将数据传给service,service传给dao,dao去取数据
4.后台将数据传回来到控制器(dao->service->action)
5.控制器确定用哪个视图来显示模型处理返回的数据(跳转)
6.被控制器选中的视图层将数据展现给用户(前端页面)


如何使用SpringMVC架构开发:
首先新建一个Web工程,新建时勾选生成web.xml
导入springmvc所需要的jar包
(1)首先,配置SpringMvc的核心:DispatcherServlet,在web.xml里进行配置:
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet> 
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

通配符为/,表示任何访问的url都会被DispatcherServlet所拦截


(2)接着,在WEB_INF文件夹下新建一个xml文件,作为spring的配置文件,注意!:这个xml文件命名是有规定的,要命名为:【DispatcherServlet的servlet名字】-servlet.xml,如上面那个例子这里就应该命名为springmvc-servlet.xml


(3)在spring配置文件里面启动注解以及启用springmvc注解驱动:
<context:component-scan base-package="action"></context:component-scan>
<mvc:annotation-driven/>


(4)在spring配置文件里面配置springmvc结果解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/"/> 
    <property name="suffix" value=".jsp"/> 
</bean>

这里前缀和后缀可以将controller传回来的字符串进行拼接,比如传回来一个index,那么等下最终解析结果就是:/index.jsp


(5)为controller进行注解以及生成modelandview:

Spring Mvc_Spring

图中,在类前面需要注解它是一个controller,然后可以看到在类和方法之前均有注解,在这里表示当我访问/项目名/user/index的时候,就会进入到这个controller,另外,注意方法的参数,命名是有规范的,之所以命名为nnn,是因为前端页面传过来的变量名也是nnn所以要一致才能获得到值,Model参数,是用来装上从后台传来的数据,把它传给DispatcherSevlet。“return “index”;”是指指定跳转的页面,同样也是传给DispatcherServlet


前端代码:(举例)

<form action="/Web_Spring/user/index" method="post">
     <input type="text" id="nnn" name="nnn">
     <input type="submit" value="提交">
</form>
 ${hello}


流程大概如下:
1.用户前端页面输入并跳转到某一url:
2.DispatcherServlet由于url-pattern是“/”,所以拦截请求
3.DispatcherServlet根据url匹配到相应的controller
4.进入到controller,controller根据前端传来的数据,将数据传给service->dao->service,然后service层再将数据传回给controller,controller将数据封装在model里,再指定返回的页面,传回给DispatcherServlet
5.DispatcherServlet根据传回来的modelandview,确定跳转的页面以及传输的数据
6.前端获得数据