zoukankan      html  css  js  c++  java
  • java:Springmvc框架1(基本配置,注解配置,转换器引入)

    1.springmvc01:(基本配置)

      

      

      web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>springmvc01</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      
      <!-- spring mvc的前端控制器,类似struts2的核心过滤器 -->
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          
          
          <!-- 通过contextConfigLocation参数指定配置文件的位置,默认在WEB-INF/查找名称为 [servlet-name]-servlet.xml -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          
          
          <!-- servlet随web容器而启动 -->
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.action</url-pattern>
      </servlet-mapping>
    </web-app>

      springmvc.xml:

    <?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-4.3.xsd">
       
       
        <!-- 处理器映射器 -->
        <!-- 根据bean的name进行查找Handler处理器 将请求的url配置在bean的name中 -->
        <!-- 这是一个默认的映射处理器,即使不配置,那么也是默认就是这个 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
        
        
        <!-- HandlerAdapter适配器 -->
        <!--  注意:这个适配器不是必须配置的,这是默认的、他在servlet容器已启动就被加载-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        
        
        <!-- 配置自定义Handler控制器 -->
        <!-- Handler后端控制器 -->
        <!-- 配置controller ,使用beanName:name="/hello.action"进行进行请求映射匹配-->
        <bean name="/hello.action" class="cn.zzsxt.controller.HelloController"></bean>
        
        
        
        <!-- 配置视图解析器 -->
        <!-- InternalResourceViewResolver:支持JSP视图解析 -->
        <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; -->
        <!-- prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为: -->
        <!-- 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,-->
        <!-- 则最终返回的jsp视图地址 "WEB-INF/view/hello.jsp" -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

      HelloController.java:

    package cn.zzsxt.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    /**
     * 后端控制器,类似与struts2的业务逻辑action
     * @author Think
     *
     */
    public class HelloController implements Controller {
        /**
         * 处理用户请求的方法,类似struts2中action的execute方法
         */
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            //处理用户请求
            ModelAndView mv = new ModelAndView();
            mv.addObject("hello", "hello,spring mvc !");//request.setAttribute("hello","hello,spring mvc!");
    //        mv.setViewName("/WEB-INF/jsp/hello.jsp");
            mv.setViewName("hello");//视图的逻辑名称
            return mv;
        }
    
    }

      index.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
          <a href="hello.action">hello springmvc!</a>
      </body>
    </html>

      

    2.springmvc2:(注解配置)

      springmvc.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
          http://www.springframework.org/schema/mvc
          http://www.springframework.org/schema/mvc/spring-mvc.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context.xsd">
     
     
         <!-- 注解扫描!!!-->
          <context:component-scan base-package="cn.zzsxt.controller"></context:component-scan>
      
      
      
      
           <!-- 注解映射器
            说明 :对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配
            ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method
        -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        -->
        <!-- 注解适配器
             说明:注解式处理器适配器,对标记@ResquestMapping的方法进行适配。
        -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        -->
        <!-- springmvc使用<mvc:annotation-driven> -->
        <!-- 自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter, -->
        <!-- 可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。 -->
        <mvc:annotation-driven></mvc:annotation-driven>
        
        
        
        
        <!-- 配置视图解析器 -->
        <!-- InternalResourceViewResolver:支持JSP视图解析 -->
        <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; -->
        <!-- prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为: -->
        <!-- 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,-->
        <!-- 则最终返回的jsp视图地址 "WEB-INF/view/hello.jsp" -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    </beans>

      web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>springmvc01</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      
      <!-- spring mvc的前端控制器,类似struts2的核心过滤器 -->
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          
          
          <!-- 通过contextConfigLocation参数指定配置文件的位置,默认在WEB-INF/查找名称为 [servlet-name]-servlet.xml -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          
          
          <!-- servlet随web容器而启动 -->
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.action</url-pattern>
      </servlet-mapping>
    </web-app>

      HelloController.java:

    package cn.zzsxt.controller;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    /**
     * @Controller:控制器
     * @RequestMapping:访问该处理器的映射路径。
     * 如果在类的上边添加该注解,类似struts2的包的命名空间(窄化路径)
     * 如果在业务方法的上方添加该注解,代表方法该方法对应的url
     * 
     * /hello/aa.action--->aa()
     * /hello/bb.action--->bb()
     * 
     *
     */
    @Controller
    @RequestMapping("/hello")
    public class HelloController {
        //返回值为ModelAndView
        @RequestMapping(value="/aa",method=RequestMethod.GET)
        public ModelAndView aa(){
            ModelAndView mv = new ModelAndView();
            mv.addObject("hello","springmvc注解开发示例!");
            mv.setViewName("hello");
            return mv;
        }
        
        //返回值为void
        @RequestMapping("/bb")
        public void bb(HttpServletRequest request,HttpServletResponse response){
            request.setAttribute("hello", "返回值为void的controller方法!");
            try {
                request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(request, response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        //返回值为String(逻辑视图名称),默认使用的请求转发
        @RequestMapping("/cc")
        public String cc(HttpServletRequest request){
            request.setAttribute("hello", "返回值为String的controller方法!");
            return "hello";//  /WEB-INF/jsp/hello.jsp
        }
        
        //重定向redirect:
        @RequestMapping("/dd")
        public String dd(HttpServletRequest request){
            request.setAttribute("hello", "返回值为String的controller方法!");
    //        return "forward:hello";//如果请求转发到controller中的方法(类似与struts2的chain),需要在前面添加forward
            return "redirect:/WEB-INF/jsp/hello.jsp";//  /WEB-INF/jsp/hello.jsp
            
        }
    }

    3.springmvc03:(转换器引入,日期转换)

      

      web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>springmvc01</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
     
     
      <!-- spring mvc的前端控制器,类似struts2的核心过滤器 -->
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          
          
          <!-- 通过contextConfigLocation参数指定配置文件的位置,默认在WEB-INF/查找名称为 [servlet-name]-servlet.xml -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          
          
          <!-- servlet随web容器而启动 -->
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.action</url-pattern>
      </servlet-mapping>
      
      
       <!-- 解决post提交乱码问题 -->
      <filter>
          <filter-name>encodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>encodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    </web-app>

      springmvc.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
          http://www.springframework.org/schema/mvc
          http://www.springframework.org/schema/mvc/spring-mvc.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context.xsd">
     
     
         <!-- 注解扫描!!!-->
          <context:component-scan base-package="cn.zzsxt.controller"></context:component-scan>
      
      
              <!-- 配置视图解析器 -->
        <!-- InternalResourceViewResolver:支持JSP视图解析 -->
        <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; -->
        <!-- prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为: -->
        <!-- 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,-->
        <!-- 则最终返回的jsp视图地址 "WEB-INF/view/hello.jsp" -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        
          
           <!-- 注解映射器
            说明 :对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配
            ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method
        -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        -->
        <!-- 注解适配器
             说明:注解式处理器适配器,对标记@ResquestMapping的方法进行适配。
        -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        -->
        <!-- springmvc使用<mvc:annotation-driven> -->
        <!-- 自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter, -->
        <!-- 可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。 -->
        <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
        
        
        
        <!-- 自定义类型转换器 -->
        <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="cn.zzsxt.converter.CustomDateConverter"></bean>
                </list>
            </property>
        </bean>
    </beans>

      UserController.java:

    package cn.zzsxt.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import cn.zzsxt.entity.Userinfo;
    /**
     * 约定大于配置
     * @author Think
     *
     */
    @Controller
    @RequestMapping("/user")
    public class UserController {
        
        //根据用户请求访问/WEB-INF/jsp/register.jsp
        @RequestMapping(value="/register",method=RequestMethod.GET)
        public String register(){
            return "register";
        }
        
        @RequestMapping(value="/register2",method=RequestMethod.GET)
        public String register2(){
            return "register2";
        }
        //@RequestParam(name="uname"):参数绑定的注解,通过该注解可以解决参数名称与controller中形参名称不一致的问题。
    //    @RequestMapping(value="/register",method=RequestMethod.POST)
    //    public String register(@RequestParam(name="userName",required=true) String uname,@RequestParam(name="userPass") String upass,Model model){
    //        System.out.println("执行了用户注册,用户名:"+uname+",密码:"+upass);
    //        model.addAttribute("userName", uname);//request.setAttribute("userName",uname);
    //        return "success";
    //    }
        @RequestMapping(value="/register",method=RequestMethod.POST)
        public String register(String userName,String userPass,Model model){
            System.out.println("执行了用户注册,用户名:"+userName+",密码:"+userPass);
            model.addAttribute("userName", userName);//request.setAttribute("userName",userName);
            return "success";
        }
        
        @RequestMapping(value="/register2",method=RequestMethod.POST)
        public String register2(Userinfo user,Model model){
            System.out.println("执行了用户注册2,用户名:"+user.getUserName()+",密码:"+user.getUserPass()+",生日:"+user.getBirthDay());
            model.addAttribute("user", user);//request.setAttribute("userName",userName);
            return "success2";
        }
    }

      CustomDateConverter.java:

    package cn.zzsxt.converter;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.springframework.core.convert.converter.Converter;
    /**
     * 自定义类型转换器
     * @author Think
     *
     */
    public class CustomDateConverter implements Converter<String, Date> {
    
        @Override
        public Date convert(String source) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date date = sdf.parse(source);
                return date;
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    }
  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/kuangzhisen/p/7446196.html
Copyright © 2011-2022 走看看