• 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:访问即可看到结果

  • 相关阅读:
    @NotNull @NotBlank @NotEmpty
    springboot @valid与@validated的参数校验使用总结
    一张表多个外键指向同一主键
    关于List的remove()方法
    双数据源切换问题
    前端通过jqplot绘制折线图
    关于js与jquery中的文档加载
    Mybatis中typeAliases的使用
    项目中常见数据库知识
    html中实现倒计时功能(setInterval,clearInterval)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/9940367.html
Copyright © 2020-2023  润新知