zoukankan      html  css  js  c++  java
  • SpringMVC的入门程序

    1、环境准备(jar包)

     

    2、在web.xml中配置前端控制器

    <!-- springmvc 前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等) 
            如果不配置contextConfigLocation,默认加载的是 WEB-INF/servlet名称-servlet.xml (即springmvc-servlet.xml)
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- 
            第一种:*.action,访问以.action结尾的由DispatcherServlet进行解析
            第二种: /,所有访问地址都由DispatcherServlet进行解析
                但是对于静态文件的解析,我们需要配置不让DispatcherServlet进行解析
                使用此种方式可以实现Restful风格的URL
            第三种: /* 这种配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet
                解析jsp,不能根据jsp页面找到Handler,会报错。
         -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

    3、编写spirngmvc.xml配置文件

      我们在 classpath 下的 spring 文件夹中放置 springmvc.xml 文件(自定义位置)

      3.1、配置处理器适配器(xml文件)

    <!-- 配置处理器适配器
        所有的处理器适配器都实现 HandlerAdapter接口
    -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

      我们查看适配器源码,可以看到 supports()方法,当中我们可以知道此适配器能执行 实现Controller接口Handler

      

      我们继续查看 Controller 接口源码:

       

        

      3.2、开发Handler

      我们需要实现 Controller 接口,才能由 SimpleControllerHandlerAdapter 适配器执行

      

    public class UserController implements Controller{
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            
            ArrayList<User> userlist = new ArrayList<User>();
            User user1 = new User("腾博","123456");
            User user2 = new User("小兵","123456");
            
            userlist.add(user1);
            userlist.add(user2);
            
            // 返回ModelAndView
            ModelAndView modelAndView = new ModelAndView();
            // 相当于request的setAttribute,在jsp页面中通过userlist取数据
            modelAndView.addObject("userlist", userlist);
            
            // 指定视图
            modelAndView.setViewName("/WEB-INF/jsp/users/user.jsp");
            
            return modelAndView;
        }
        
    }

      3.3、配置Handler(xml文件中)

      将编写好的 Hander 在 spring 容器加载

      name是以 .action 结尾,

    <!-- 配置Handler -->
    <bean name="/queryUsers.action" class="com.bjxb.ssm.controller.UserController"/>

      3.4、视图的编写

      

      3.5、配置处理器映射器(xml文件中)

    <!-- 处理器映射器
            将bean的name作为url进行查找,
            bean就是我们写的Handler,所以我们需要在配置Handler时指定beanname(就是url)
     -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

      3.6、配置视图解析器

      这里我们视图是 jsp,所以我们需要配置解析 jsp 的视图解析器

    <!-- 视图解析器
            解析jsp页面,默认使用jstl标签,classpath下得有jstl的包
     -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

      我们来看 InternalResourceViewResolver 这个视图解析器源码默认使用 jstl 标签进行解析 jsp

      

      3.7、部署调试

      访问地址:http://localhost:8080/springmvc_first/queryUsers.action

      错误一:处理器映射器根据 URL(错误的URL) 找不到 Handler ,报下面的错误。说明 URL 错误。

      

      错误二:处理器映射器根据 URL 找到了 Handler,转发的 jsp 页面找到,报下面的错误,说明 jsp 页面地址错误了。

       

      

     

  • 相关阅读:
    python第二课
    python第一课
    Python基础20-类的创建与删增改查
    Python基础19模块-hashlib模块
    Python基础18模块-configerparse模块
    Python基础17模块-logging模块
    Python基础16模块-re模块
    Python基础-15模块-OS模块
    Python基础-14模块-random模块
    Python基础-13模块-时间模块
  • 原文地址:https://www.cnblogs.com/xb1223/p/10181875.html
Copyright © 2011-2022 走看看