SpringMVC入门

SpringMVC:

使用:
1、下载(官网下载)
2、导包:
  commons-logging-1.1.3.jar
  spring-aop-5.0.8.RELEASE.jar
  spring-aspects-5.0.8.RELEASE.jar
  spring-beans-5.0.8.RELEASE.jar
  spring-context-5.0.8.RELEASE.jar
  spring-core-5.0.8.RELEASE.jar
  spring-expression-5.0.8.RELEASE.jar
  spring-instrument-5.0.8.RELEASE.jar
  spring-jdbc-5.0.8.RELEASE.jar
  spring-tx-5.0.8.RELEASE.jar
  spring-web-5.0.8.RELEASE.jar
  spring-webmvc-5.0.8.RELEASE.jar 
3、配置xml(springmvc.xml文件)和(web.xml文件)
4、编写controller

SpringMVC的写法:

配置web.xml(非注解)
<!-- 配置servlet -->
  <servlet>
      <servlet-name>servlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 配置init-param(配置springmvc.xml的地址):如果不配置init-param,需要把src下的xml放在WEB-INF下,名为:(servlet-name的值-servlet.xml)即可 -->
      <init-param>
          <param-name>ContextConfigLocation</param-name>
          <param-value>ClassPath:springmvc.xml</param-value>
      </init-param>
      <!-- 当容器启动时立即启动 -->
  		<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <!-- 和上面的servlet-name值一致 -->
      <servlet-name>servlet</servlet-name>
      <!-- 拦截一切以.action的请求,也可以是以xxx/*为前缀的,也可以是/ -->
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>

配置springmvc.xml文件(非注解)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束文件 -->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
     <!-- id:值是为了区分beans   name:提交地址名     class:TestController类所在的包 -->  
	<bean id="user" name="/user.action" class="com.hp.controller.TestController"></bean>
</beans>

编写controller:

public class TestController implements Controller{//继承Controller接口 
    //重写一个ModelAndView方法
	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("请求来了");
		//指定一个视图(页面跳转)
		ModelAndView mav=new ModelAndView();
		mav.setViewName("jsp/ok.jsp");//要跳转的页面(成功将跳转到/jsp/ok.jsp页面)
		return mav;//视图返回值
	}

}


jsp页面
<!-- 提交地址为springmvc.xml文件中bean里面name的属性值 -->
<a href="user.action">点我</a>

SpringMVC注解的写法:

配置web.xml(注解)
<!-- 配置servlet -->
  <servlet>
      <servlet-name>servlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 配置init-param(配置springmvc.xml的地址):如果不配置init-param,需要把src下的xml放在WEB-INF下,名为:(servlet-name的值-servlet.xml)即可 -->
      <init-param>
          <param-name>ContextConfigLocation</param-name>
          <param-value>ClassPath:springmvc.xml</param-value>
      </init-param>
      <!-- 当容器启动时立即启动 -->
  		<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <!-- 和上面的servlet-name值一致 -->
      <servlet-name>servlet</servlet-name>
      <!-- 拦截一切以.action的请求,也可以是以xxx/*为前缀的,也可以是/ -->
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>

配置springmvc.xml文件(注解)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束文件 -->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	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.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">
        
     <!-- 扫描有注解的包 --><!-- 这里会用到context包,需要在上面加spring-context.xsd -->
     <context:component-scan base-package="com.hp.controller"></context:component-scan>
     <!-- 配置视图解析器(InternalResourceViewResolver) -->
	 <bean id="user" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 配置视图返回值的前缀 -->
		<property name="prefix" value="/jsp/" />
		<!-- 配置视图返回值的后缀 -->
		<property name="suffix" value=".jsp" />
		<!-- 返回值为ok,即:/jsp/ok.jsp (跳转到这个界面) -->
	</bean>
</beans>


编写controller:
@Controller  //引入Controller包
@RequestMapping("TestController")  //类的注解
public class TestController{
	/**

  * 方法的注解(当没有类的注解的时候,页面<a href="HalloSpringmvc">点我</a>)直接给方法注解名,
    * 当有注解时,页面<a href="TestController/HalloSpringmvc">点我</a>),写法为:类的注解名/方法的注解名
      */
      @RequestMapping("HalloSpringmvc")  //方法的注解
      public String HalloSpringmvc() {
      //视图返回值
      return "ok";
      }

jsp页面
<!-- 类的注解名/方法的注解名-->
<a href="TestController/HalloSpringmvc">点我</a>


RequestMapping映射及属性:

映射是去匹配@RequestMapping注解,可以和 类名、方法名不一致
    
//默认的是值得形式,一般不写value,@RequestMapping("注解名") 
默认形式: @RequestMapping(value="注解名")  

//1、method属性:  在加了method = RequestMethod.POST后, 通过method指定请求方式(GET、POST、DELETE、PUT)  该注解只拦截post请求,不是post请求会报405的错;    
//2、params属性:  params表示参数:params = {"参数1","参数二"},可以有多个参数,也可以给参数并赋值params = {"uname=admin","upwd=123456","age!=20","!reaname"}等,也可以多个参数,!reaname表示不能有reaname这个参数,有就会报404
//3、headers属性:表示请求头(一般用不到)
//4、ant风格的请求路径:(?代表单字符、*代表任意个字符【任意是0个或多个】、**代表任意个目录)
多参数形式:@RequestMapping(value="注解名",method = RequestMethod.POST,params = {"name=admin","pwd=123456"},headers = {})
注:当页面没有指定是post请求,都会默认是get请求,<a></a>标签也是get请求,页面跳转是默认使用了请求转发的跳转方式(当指定是重定向,才会是从定向的跳转方式)

    
//ant风格的请求路径:(?代表单字符、*代表任意个字符【任意是0个或多个】、**代表任意个目录)
  1、?代表单字符:  @RequestMapping(value = "HalloSpringmvc2/?/abc", method = RequestMethod.GET)
    jsp页面url路径写法:
    <a href="TestController/HalloSpringmvc2/a/abc">测试ant风格的中的(?代表单字符)请求路径</a>
    
 2*代表任意个字符:  @RequestMapping(value = "HalloSpringmvc2_1/*/abc", method = RequestMethod.GET)
    jsp页面url路径写法:
    <a href="TestController/HalloSpringmvc2_1/abc/abc">测试ant风格的中的(*代表任意个字符【任意是0个或多个】)请求路径</a>
    
3**代表任意个目录:  @RequestMapping(value = "HalloSpringmvc2_2/**/abc", method = RequestMethod.GET)
    jsp页面url路径写法:
    <a href="TestController/HalloSpringmvc2_2/a/b/c/abc">测试ant风格的中的(**代表任意个目录)请求路径</a>

//基于ant的一个引深                                                                      
 @pathVariable   获取动态参数
      eg:   
      jsp页面写法:
      <h3>//基于ant的一个引深 </h3>
      <a href="TestController/HalloSpringmvc3/刘二狗">获取动态参数,这里的 刘二狗 是参数值</a><br>    
 后台接受页面传回来的值:
  // 5、基于ant的一个引深      
	@RequestMapping(value = "HalloSpringmvc3/{name}", method = RequestMethod.GET)
                           //@pathVariable   获取动态参数,{name}是页面传过来的属性值
     public String HalloSpringmvc3(@PathVariable("name") String name) {	
		System.out.println(name);
		// 视图返回值
		return "ok";
		}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页