5.SpringMVC视图与Controller

Spring mvc框架搭建步骤

1.下载jar文件并导入到工程

:
在这里插入图片描述

2.配置文件
在web.xml中配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
      xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <!--欢迎界面-->
<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 核心控制器的配置DispatchServlet-->
<servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
 </servlet-class>
 <!--初始化参数-->
<init-param>
 	<!--这里选的是servlet.xml的路径选择-->
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:springmvc-servlet.xml</param-value>
   
 </init-param>
     <!--自动启动-->
     <load-on-startup>1</load-on-startup>
 </servlet>
 
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
  
</servlet-mapping>
 				  
</web-app>
创建Spring MVC的配置文件
<!--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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
     http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/mvc
     http://www.springframework.org/schema/mvc/spring-mvc.xsd">

 <!--一.配置处理器映射 HandlerMapping-->
     <!--1.BeanNameUrlHandlerMapping通过Bean名字映射-->
     <!--2.DefaultAnnotationHanderMapping通过注解方式映射-->
     <!--"/index.html"的意思是如果网址输入了index.html
     								就会把这次请求交给IndexController处理-->
     <bean name="/index.html" class="cn.kgc.controller.IndexController"/>
 <!--二.配置视图解析器 /WEB-INF/jsp/index.jsp-->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <!--视图前后缀-->
         <property name="prefix" value="/view/"/>
         <property name="suffix" value=".jsp"/>
     </bean>
     
</beans>
3.创建Controller-处理请求的控制器
BeanNameUrlHandlerMapping
/**
* IndexController
*/
package cn.kgc.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class IndexController extends AbstractController {
    protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        System.out.println("hello,spring mvc!");
        return new ModelAndView("index");
    }
}
4.创建View-jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
    <meta charset="utf-8">
</head>
<body>
<h1>
    Welcome to spring mvc<br/>
    This is Hxl Page!!!<br/>
    //这里使用了ModelAndView里设置的 addObject()方法
    您输入的是:<span style="color: crimson">${username}</span>
</h1>

</body>
</html>

5.使用注解配置servlet.xml和Controller
Controller控制器

@RequestMapping
标注在类定义
标注在方法定义
映射规则

  1. 通过请求URL进行映射

  2. 通过请求参数进行映射
    若选择方法参数直接入参的话,方法入参名必须与请求参数名保持一致

  3. 通过请求方法映射
    GET
    POST
    DELETE

  4. @RequestMapping
    RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
    RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

    1、value, method;
    value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
    method: 指定请求的method类型, GET、POST、PUT、DELETE等;
    2、consumes,produces;
    consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
    produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
    3、params,headers;
    params: 指定request中必须包含某些参数值是,才让该方法处理。
    headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
  5. @RequestParam
    在变量前面加上@RequestParam来强调该变量的不为空,为空则报400错误
    也可以@RequestParam(required=false) 来关闭必须参数的限制
    这样就和不带注解的效果一样了

package cn.kgc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/***
 * 使用注解
 */
注释控制器,告诉Spring Mvc这是一个控制器类
@Controller

声明该控制器的拦截路径,如localhost:8080/index 下所有内容都交给此控制器控制
@RequestMapping("/index")
public class IndexController {
    public Logger logger = Logger.getLogger(IndexController.class);
    
    方法一:拦截的具体:如请求localhost:8080/index/index.html 就交由此方法来进行处理请求
    @RequestMapping("/index.html")
    public String index(){
        System.out.println("hello spring mvc!");
        return "index";
    }
    
    //value可以选多个不同地址请求同个控制器,method选择的是请求的方式如GET,POST
    //params的参数必须等于请求中的参数名字
    方法二:使用@RequestMapping 里的属性赋值方式拦截 
    		value:这里拦截的是/index/welcome或/index/
    	   	method:选择的是请求类型,post,get,delete等
    	   	params:入参名称,必须等同于方法的入参名字
    @RequestMapping(value = {"/welcome","/"},method = RequestMethod.GET,
    							params = "uname")
    							
    public String welcome(@RequestParam String uname){
        System.out.println("hellow,springMVC,username:"+uname);
        return "index";
    }
}
servlet.xml
....省略头文件
<beans>
<!-- 一.配置处理器映射 HandlerMapping -->
<!--1.BeanNameUrlHandlerMapping通过Bean名字映射-->
<!--2.DefaultAnnotationHanderMapping通过注解方式映射-->
<!--<bean name="/index.html" class="cn.kgc.controller.IndexController"/>-->

<!--3.使用注解方式配置Controller-->
<mvc:annotation-driven/>
<!--使用上下文扫描包路径-->
<context:component-scan base-package="cn.kgc.controller"/>
<!--二.配置视图解析器 /WEB-INF/jsp/index.jsp-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--视图前后缀-->
    <property name="prefix" value="/view/"/>
    <property name="suffix" value=".jsp"/>
</bean>
</beans>
6.ModelAndView返回视图
使用modelAndView的方式
package cn.kgc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/***
 * UserController
 */
@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/welcome")
    public ModelAndView welcome(@RequestParam String uname){
        System.out.println("hellow,springMVC,username:"+uname);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("index");
        modelAndView.addObject("username",uname);
        return modelAndView;
    }

}
使用Map的方式
//使用Map的方式
@RequestMapping("index3.html")
public String index3(@RequestParam String name, Map<String,Object> model){
    model.put("username",name);
    return "index";
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值