首页 > 代码库 > SpringMVC入门配置和简单实现

SpringMVC入门配置和简单实现

web.xml的配置

<!-- springmvc中央控制器 -->    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    </servlet>        <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <!-- url-pattern不要配成/* -->        <url-pattern>*.do</url-pattern>    </servlet-mapping>

 

 

核心配置:springmvc-servelet.xml

xml方式:
三种handlerMapping访问方式,1.通过<bean name="hello.do" class=""/>的name访问,默认配置:   
<!-- 默认情况下采用bean的name映射处理器来访问controller,如果没有被显示定义出来会被其他的映射处理所覆盖,如果想要使用需要显示定义 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
2,简单url映射处理:
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.do">testController</prop>
            </props>
        </property>
    </bean>  
3,<!-- 以controller类名来访问的映射处理器 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>  
<!-- 以controller类名来访问,首字母必须小写 -->
    <bean id="testController" class="com.app.web.servlet.TestController"></bean>  
不论是xml还是注解都必须配置视图解析器:
<!-- 内部资源视图解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置前缀 -->
        <property name="prefix" value="http://www.mamicode.com/WEB-INF/jsp/"></property>
        <!-- 配置后缀 -->
        <property name="suffix" value="http://www.mamicode.com/.jsp"></property>
    </bean> 
 
三种控制器:
1,参数控制器:
        <!-- 参数控制器 -->
    <!-- 不能采用controller的class的那么来访问 -->
    <bean name="/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName" value="http://www.mamicode.com/index"></property>
    </bean> 
2,命令控制器:
    <!-- 命令控制器 -->
    <bean name="/comm.do" class="com.app.web.model.CommController">
        <!-- 指定收集对象类型 -->
        <property name="commandClass" value="http://www.mamicode.com/com.app.domain.Person"></property>
    </bean>  
3.表单控制器:
<!-- 表单控制器 -->
    <bean name="/form.do" class="com.app.web.servlet.FormController">
        <!-- 指定收集对象类型 -->
        <property name="commandClass" value="http://www.mamicode.com/com.app.domain.Person"></property>
        <!-- 表单页面 -->
        <property name="formView" value="http://www.mamicode.com/form"></property>
        <!-- 成功页面 -->
        <property name="successView" value="http://www.mamicode.com/success"/>
    </bean>  
 
注解方式:
springmvc-servelet.xml中不需要配置控制器和访问方式,只需要配置视图解析器,注解驱动,组件扫描即可
<!-- 注册注解驱动 -->
<mvc:annotation-driven/> 
    <!-- 组件扫描 -->
<context:component-scan base-package="com.app.web.controller"></context:component-scan>
 
视图解析器:
<!-- 内部资源视图解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置前缀 -->
        <property name="prefix" value="http://www.mamicode.com/WEB-INF/jsp/"></property>
        <!-- 配置后缀 -->
        <property name="suffix" value="http://www.mamicode.com/.jsp"></property>
    </bean> 
在controller类上加上注解:@controller   命名空间:RequestMapping("test") ,在方法上加上RequestMapping("test1.do")--方法上的注解名字使用和的方法名称相同便于区分在同一个controller中的不同方法
 1 @Controller 2 @RequestMapping("test") 3 public class TestController1 { 4  5     /** 6      * 通过modelandview方式注解 7      * @param person 对象参数 8      * @return 9      */10     @RequestMapping("test1.do")11     public ModelAndView test1(Person person){12     13     Map<String, Object> map=new HashMap<String, Object>();14     map.put("p", person);15     16     return new ModelAndView("success", map);17     }18     19     /**20      * 通过返回String类型配置 建议使用这种21      * @param person 注入对象22      * @param model model接口参数23      * @return24      */25     @RequestMapping("test2.do")26     public String test2(Person person,Model model){27     System.out.println("test2..");28     model.addAttribute("p",person);29     return "success";30     }31     32     /**33      * 34      * @param person35      * @param model36      * @return37      */38     @RequestMapping("test3.do")39     public String test3(Person person,Map<String,Object> map){40 41     map.put("p", person);42     43     return "success";44     }45     46 }