SpringMVC示例

来源:互联网 发布:审美差异知乎 编辑:程序博客网 时间:2024/06/07 05:17

1.首先,导入SpringMVC需要的jar包。

2.在 web.xml 中配置前端控制器 DispatcherServlet。
[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.     xmlns="http://xmlns.jcp.org/xml/ns/javaee"   
  4.     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee   
  5.     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"   
  6.     id="WebApp_ID" version="3.1">  
  7.     <!-- 定义Spring MVC的前端控制器 -->  
  8.   <servlet>  
  9.     <servlet-name>springmvc</servlet-name>  
  10.     <servlet-class>  
  11.         org.springframework.web.servlet.DispatcherServlet  
  12.     </servlet-class>  
  13.     <init-param>  
  14.       <param-name>contextConfigLocation</param-name>  
  15.       <param-value>/WEB-INF/springmvc-config.xml</param-value>  
  16.     </init-param>  
  17.     <load-on-startup>1</load-on-startup>  
  18.   </servlet>  
  19.   <!-- 让Spring MVC的前端控制器拦截所有请求 -->  
  20.   <servlet-mapping>  
  21.     <servlet-name>springmvc</servlet-name>  
  22.     <url-pattern>/</url-pattern>  
  23.   </servlet-mapping>  
  24. </web-app>  

DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。在此url-pattern 元素的值为“/”,意思是将所有的 URL 映射到该 Servlet

3.springmvc-config.xml:(这就是mvc中的c,控制层)

复制代码
<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.springframework.org/schema/beans"          xmlns:aop="http://www.springframework.org/schema/aop"          xmlns:context="http://www.springframework.org/schema/context"         xmlns:mvc="http://www.springframework.org/schema/mvc"          xmlns:tx="http://www.springframework.org/schema/tx"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://www.springframework.org/schema/aop           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd           http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-3.0.xsd           http://www.springframework.org/schema/mvc           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd           http://www.springframework.org/schema/tx           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">        <mvc:annotation-driven />      <!-- <mvc:default-servlet-handler/> -->    <context:component-scan base-package="controller" />            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">          <property name="prefix" value="/views/" />          <property name="suffix" value=".jsp" />         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />     </bean>  </beans>  
复制代码

4.user类:(mvc中的m,模型层)

复制代码
package com.test.beans;/**   *  User : 用户bean * @author xuejupo  jpxue@travelsky.com  *  * create in 2016-3-1 下午4:23:16     */public class User {    public final String getUserId() {        return userId;    }    public final void setUserId(String userId) {        this.userId = userId;    }    public final String getUserName() {        return userName;    }    public final void setUserName(String userName) {        this.userName = userName;    }    public final String getPasswd() {        return passwd;    }    public final void setPasswd(String passwd) {        this.passwd = passwd;    }    public final String getInfo() {        return info;    }    public final void setInfo(String info) {        this.info = info;    }    private String userId;        private String userName;        private String passwd;        private String info;        @Override    public String toString(){        return "用户名:\r\n"+this.userName + "用户密码:\r\n"+this.passwd + "用户的信息:\r\n"+ this.info;    }}
复制代码

5.控制器DispatcherController(和springmvc-config.xml文件一起组成控制层,控制着传入的url应该使用哪部分代码逻辑和使用哪个model层):

复制代码
package controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.test.beans.User;/**  * DispatcherController:* @author xuejupo  jpxue@travelsky.com * * create in 2016-3-1 下午3:35:13  *    */@Controller@RequestMapping("demo")public class DispatcherController {    @RequestMapping(method=RequestMethod.GET)        public String printWelcome(ModelMap model) {          User user = new User();        user.setInfo("哈哈,我是唯一的用户!");        user.setUserName("我是老大!");        user.setPasswd("不告诉你!");        model.addAttribute("str0121", "我去,成功了呀!!!");         model.addAttribute("info","当前用户信息为:");        model.addAttribute("user", user);        System.out.println("index.jsp");        return "index";    }  }
复制代码

@Controller 负责注册一个bean 到spring 上下文中

6.index.jsp(mvc中的v层,展示层,负责向前端展示结果,直接和用户打交道的层)

复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    <html>        <head>            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">            <title>Insert title here</title>        </head>                <body>            <c:out value="${str0121}"></c:out>        <p>        <c:out value="${info}"></c:out>        <p>        <c:out value="${user}"></c:out>    </body>    </html> 
复制代码

然后url中输入:http://localhost:8080/test/demo

结果:

          



附录:

SpringMVC常用注解

@Controller

  负责注册一个bean 到spring 上下文中
@RequestMapping

  注解为控制器指定可以处理哪些 URL 请求
@RequestBody

  该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

@ResponseBody

   该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

@ModelAttribute    

  在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中 

@RequestParam 

  在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

@PathVariable

  绑定 URL 占位符到入参
@ExceptionHandler

  注解到方法上,出现异常时会执行该方法
@ControllerAdvice

  使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常


原创粉丝点击