SpringMVC(1)

1.简要说明:

Spring为展现层提供的基于MVC设计理念的优秀web框架,目前主流的框架

Spring3.0以后全面超越Struts2,成为最优秀的MVC框架

Spring MVC通过一套MVC注解,让pojo成为处理请求控制器,无需实现任何接口

支持REST风格URL请求

是Spring框架的一个模块,无需通过中间层进行整合

2.在b/s系统下的

 3.springmvc的流程:

 

 
前端控制器DispacherServlet
作用:接受请求,响应结果,相当于转发器,中央处理器
 
处理器映射器HandlerMapping
作用:根据请求的url查找Handler
 
处理器适配器HandlerAdapter
作用:按照特定的规则(HandlerAdapter)的要求去执行handler
注意:编写handler时按照HandlerAdpter的要求去做
 
视图解析器View resource
作用:进行视图解析,根据逻辑视图名解析成真的视图
 
视图View
View是一个接口,实现支持不同的View类型(jsp,pdf...)

 4.简单的小代码实例:

新建一个web工程!

 4.1 首先是web.xml文件中

 <!-- 前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      
<!--
contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器,设配器等...)
如果不配置contextConfigLocation,默认加载的是/web-INF/servletName-servlet.xml    
此时实例--->(springmvc-servlet.xml) --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>

注意: <url-pattern>*.action</url-pattern>中的类型

one: *.action 访问以  .action 结尾由 DispatcherServlet进行解析
two:    /    所以访问的地址由DispatcherServlet进行解析,,对于静态文件的解析需要配置不让DispatcherServlet进行解析
three:  /*   这压根配置不对,使用这种配置,最终需要转发到一个jsp页面时,仍然由DispatcherServlet
                解析jsp地址,不能根据jsp页面找到hander会报错

第三种不能使用

 4.2配置处理器适配器

 在在springmvc.xml文件中

<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

所有的处理器适配器都实现了HandlerAdapter接口

观察源代码发现:

public interface HandlerAdapter {
     boolean supports(Object handler);
...
}

supports:支持哪一种handler

SimpleControllerHandlerAdapter.java

实现Controller接口的handler

观察Controller.java代码

 所以此时需要实现Contoller接口

public class ItemsController implements Controller {
     @Override
     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
           
           List<Items> itemsList = new ArrayList<Items>();
           //向list中填充静态数据
           
           Items items_1 = new Items();
           items_1.setName("手机");
           items_1.setPrice(3000f);
           items_1.setDetail("一个新款的手机");

           itemsList.add(items_1);
           
           ModelAndView modelAndView = new ModelAndView();
           //相当于request的setAttribute
           modelAndView.addObject("itemsList", itemsList);
           
           //指定视图
           modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
           return modelAndView;
     }
}

modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");

这句话的意思即是我们需要新建的jsp文件以及相关的路径问题

即视图:

itemsList.jsp

商品列表:
<table width="100%" border=1>
<tr>
     <td>商品名称</td>
     <td>商品价格</td>
     <td>生产日期</td>
     <td>商品描述</td>
     <td>操作</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
     <td>${item.name }</td>
     <td>${item.price }</td>
     <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
     <td>${item.detail }</td>
     
     <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td>
</tr>
</c:forEach>
</table>
</form>

 4.3配置....

 springmvc.xml文件中

配置handler

<!-- 配置Handler -->
<bean name="/queryItems.action" class="com.MrChengs.controller.ItemsController"></bean>

class是全类名

name是请求的url

 

配置处理器映射器

<!-- 处理器映射器 -->
<!-- 将bean的name作为url进行查找,需要配置Handler时指定beanName -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

  

 配置视图解析器

<!-- 视图显示器 -->
<!-- 解析jsp视图 -->
<!-- 默认使用jstl的包 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

 然后运行Tomcat:访问即可看到结果

原文地址:https://www.cnblogs.com/Mrchengs/p/9940367.html