Java框架:SpringMVC:配置文件 + Controller + 注解

一、配置DispatchServlet-Servlet.xml文件

<!-- 1.配置注解扫描位置 :controller的项目位置-->
<context:component-scan base-package="项目名.web.controller"/>
		
<!-- 2. 配置处理器映射 :通过注解来查找 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<!-- 3.配置注解处理适配器 :执行控制器的方法 -->	
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
		
<!-- 4.配置springmvc视图解析器  :前缀 + 后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/views"/>
	<property name="suffix" value=".jsp"/>
</bean>

总结:

  • 1.配置扫描包                    确定controller扫描位置
  • 2.配置注解处理映射         采用注解方式查找
  • 3.配置适配器                    执行controller中方法
  • 4.配置资源视图解析器     视图解析

 二、Controller类

  • 扮演角色:中介 + 包装

主要作用 :

  • 1.映射路径
  • 2.处理前端参数(转换格式化等),并将其传递给业务逻辑。
  • 3.将业务逻辑返回的数据封装成model传递给前端。

主要注解

    @Controller:
            位置:放在类名上
            作用:标记类是Controller
            

    @RequestMapping()
            位置:放在类名和方法名上
            作用:表示请求映射路径
            写法

  • @RequestMapping("user")
    @RequestMapping("/user.do")
    @RequestMapping(value="/user.do")
    @RequestMapping(value = "/user2",method=RequestMethod.POST)   只能使用POST方法
    @RequestMapping(value = "/user3",method=RequestMethod.Get)    只能使用GET方法 

    @RequestParam():放在方法参数列表中,里面写前端参数(类型,必须等)
            位置:在方法参数列表中
            作用:里面写前端参数,声明类型,必须等
            写法:

  •     @GetMapping(value = "/getStuList")
        public ReturnMessage getStudentList(
                        @RequestParam(value = "name", required = false) String name,  
                        @RequestParam(value = "age", required = false) Integer age){
                        ...........方法体.........
        }

    @PathVariable:
            位置:参数列表中,
            作用:表示该参数对应路径的参数(查看URI模板)
            写法:把路径{}里面参数 注入 方法参数 里面

  • @Controller
    @RequestMapping ( "/test/{variable1}" )
    public class MyController {
    
        @RequestMapping ( "/get/{variable2}" )
        public Student getStudList( @PathVariable String variable1,
                                    @PathVariable ("variable2") int variable2) {
                       ...........方法体...........
        }
    }

Spring 识别管理controller控制器

      方式一: 在SpringMVC 的配置文件中定义 MyController 的bean 对象。  有几个controller就写几个bean

<bean class="com.zjc..web.controller.MyController名字1"/>
..................................
<bean class="com.zjc..web.controller.MyController名字n"/>

    方式二:告诉Spring该到哪里去找标记为@Controller的Controller控制器

< context:component-scan base-package = "com.zjc.controller(包名)" > 
	< context:exclude-filter type = "annotation" expression = "org.springframework.stereotype.Controller" /> 
</ context:component-scan >

controller转发和重定向

  • 1.转发到同一个控制器            return  "forward: 本controller的方法.do"
  • 2.转发到不同一个控制器        return  "forward: 其他controller的方法.do"
  • 重定向,把  forward   改成   redirect

@ResponseBody 和 @RequestBody 注解

  • @ResponseBody 把后台pojo数据转换json对象 ,返回到页面。
  • @RequestBody    把从前台接收的json数据,自动封装成JavaBean

 


Spring MVC 多视图 (json/xml)

 使用xml格式支持的jar包:spring-oxm...

    <!-- 4.配置资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置支持媒体类型 -->
        <property name="contentNegotiationManager">
            <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
                <property name="mediaTypes">
                    <map>
                        <entry key="json" value="application/json"></entry>
                        <entry key="xml" value="application/xml"></entry>
                    </map>
                </property>
            </bean>
        </property>

        <!-- 指定默认视图 -->
        <property name="defaultViews">
            <!-- 支持多个视图 -->
            <list>
                <!-- 对josn格式视图支持 -->
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
                <!-- xml格式视图支持 -->
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <constructor-arg>
                        <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                            <property name="classesToBeBound">
                                <list>
                                    <value>com.zjc.项目名.类名</value>
                                </list>
                            </property>
                        </bean>
                    </constructor-arg>
                </bean>
            </list>
        </property>
    </bean>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值