springmvc非注解入门程序

 

springnvc基本入门程序

因为是入门程序就不接数据库了,单纯的springmvc

springmvc介绍:springmvc是sping的一个模块,与springmvc整合无需通过中间层进行整合

springmvc属于mvc的设计模式

M:model模型 ,包括pojo、service、dao、action等

V:view 视图,供用户观赏的页面,不多说

C:control 控制,进行流程控制,所有的request请求都需经过C,可以说是mvc的核心

执行流程:request请求过来之后首先到Control层,control层则请求或者调用model层来处理用户的各种请求来返回数据,

  自然的C调用返回的数据也是返回到C,C可以直接响应,但一般都是经过视图渲染到request域到V,在就是response响应

 

其次就是springmvc的几个核心组件及其作用,如下:

1、前端控制器:DispacherServlet 接受请求,返回结果,转发器

2、处理器映射器:HandlerMapping 根据请求url查来Handler

3、处理器适配器:HandlerAdapter 按照特定的规则去执行Handler

4、视图解析器:View resourver 根据逻辑视图来返回真的页面 (就是为jsp加前后缀)

5、view接口:实现类呢可以支持不同的View类型,这里只介绍jsp,但是要知道还有一些如freemaker、pdf等视图

基本上用到的也就这几个组件,下面开始正式写代码

如下:

1、新建项目考入所需的jar包,注意spring-webmvc一定要有,老规矩具体的jar就不贴图了

2、在WEB-INF下的web.xml中配置 springmvc的核心控制器DispacherServlet,位于上面的spring-webmvc的包中

  当然映射也不能忘掉,他规定了要拦截那些请求去处理,具体的请看注释

      <!-- springmvc前端控制器,所有的前台的请求都会在先进过前端控制器
          由前端控制器分发到具体的处理类:如处理器映射器等
       -->
    <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:spring/springmvc.xml</param-value >
         </init-param >
         <!-- 实例化这个servlet的时候被载入的顺序 等于0或者大于0的时候容器启动就加载这个servlet
             若没有指定,则表示在这个servlet被选择时在会init,整数值越小则servlet加载的优先级就越高 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--第一种:*.action 访问以 .action结尾的有DispathcerServlet解析
            第二种:/ 所有访问的地址都由DispathcerServlet解析,对于静态文件的解析需要配置不然Ds解析,使用这种方式可以实现restful风格url
            第三中:/* 这种配置不对,使用的话,最终我们要转发到jsp页面时,这是仍然会有ds解析 jsp 不能根据jsp页面来找到handler 会报错
         -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

 

3、然后就是springmvc几个核心的组件的配置了,配置好之后基本上springmvc基本框架就算完成了

首先新建一个sprngmvc.xml,名字随意,文件的位置有两种,以一种是系统默认加载位置在,只要你

将名字格式写成servletName-servlet.xml,并放在WEB-INF目录下,系统会自动的加载这个配置文件,

如果不是上面的规则,就需要用第2步的init-param去指定文件位置。我就按照自己的习惯,新建一个

与src平级的sourceFolder 用来存放配置文件,后期会有mybaits等整合配置文件都放在这里如图:

springmvc中主要是想让容器自动加载几个组件来让我们直接使用,如下:

<?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-3.2.xsd">
    
    <!-- 处理器映射器:将bean的name作为 url进行查找,需要在配置 Handerl时指定 Bean的name就是 url -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    
    <!-- 处理器适配器:所有的适配器都实现了HandlerAdapter,框架可以根据这个接口
                          来判断bean是否是适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    
    <!-- 视图解析器 :解析 jsp视图  默认使用 jstl classpath 要有jstl的包-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>

 

4、下面就该写Handler,大多数人习惯叫Controller,就是叫法不同,两者是等价的,非注解的controller

    需要实现Controller接口:org.springframework.web.servlet.mvc.Controller;

public class ItemsController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
         //调用service查询数据库,查询用户列表,这里不连接数据库,使用静态模拟
        List<User> userList = new ArrayList<User>();

         //向list中填充静态数据
        User user1 = new User();
        user1.setBrithday(new Date());
        user1.setId(001);
        user1.setName("zs");
        User user2 = new User();
        user1.setBrithday(new Date());
        user2.setId(002);
        user2.setName("ls");
        userList.add(user1);
        userList.add(user2);
        
         //返回modelAndView
        ModelAndView modelAndView = new ModelAndView();
         //相当于request的setAttribute
        modelAndView.addObject("userList" , userList );
        
         //指定视图:写入我们jsp存放的路径
        modelAndView.setViewName("/WEB-INF/jsp/userList.jsp" );
        
        return modelAndView ;
    }
}

 5、controller完成之后记得要在springmvc.xml中配置才行(因为是非注解的,所有的需要创建的对象都需要注册)

<!-- 配置Handler:上面配置的处理器映射器就就根据这个bean的name来匹配我们所需的类,一个url
           我们才能根据这个请求的url来找到我们方才所写的controller -->
    <bean name="/queryUser.action" class="cn.hh.controller.ItemsController" />

 

6、在WEB-INF下新建一个jsp的目录和userList.jsp的页面,用EL表达式将值放在request中的数据取出来展示即可

<body>
    ${userList }
</body>

 

最后翻入tomcat运行:得出

注意这个queryUser.action 就是我们在springmvc中配置的Handler的名字,还有其他的配置方法,这个是最直观

的,个人感觉容易理解

有问题请赐教,愿与君共勉

posted @ 2017-06-20 18:06  寒菡  阅读(241)  评论(0编辑  收藏  举报