Spring MVC入门例子

参考总结自易百教程

springMVC工作流程:

     浏览器------>请求request---------->核心分发控制器DispatcherServlet(在/WEB-INF/web.xml中配置)

    --------匹配相应的处理器handle或控制器controller(在/WEB-INF/[serlvet-name]-servlet.xml中定义注解扫描器,扫描控制器类包)

    ------>该处理器处理请求(调用模型层model,通过业务逻辑数据库操作完成model数据封装)
    
    --------返回ModelAndView------->DispatcherServlet前端控制器---------->视图层(获得数据渲染视图)

    --------返回到-------->DispatcherServlet前端控制器------通过视图解析器(在/WEB-INF/[serlvet-name]-servlet.xml中配置)

    -------匹配完整响应路径----------->响应response----->浏览器

1、新建JavaWeb工程

2、导入spring支持包建立path,可以通过IDE部署spring开发能力自动完成导包,需取消勾选生成applicationContext.xml

3、在/WEB-INF/下新建web.xml 和 [(在web.xml中配置的)servlet-name]-servlet.xml (如: hello-servlet.xml)

4、控制器:新建com.controller包,编写一个普通java文件,如:HelloController.java添加@Controller注解,

类体中编写请求处理方法,如pulbic String hello(){}添加@RequsetMapping(…)注明该方法处理的请求内容或类型,返回的是

视图文件字符串如return "index";(前置路径“/jsp/”,后置文件名“.jsp”)http://localhost:8080/项目名/index最终配置映射

为“http://localhost:8080/项目名/jsp/index.jsp”

5、视图:在Web-Root/下新建jsp文件夹添加一个jsp文件,如:index.jsp

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
   id="WebApp_ID" version="3.1">
  
  <display-name>springMVC_hello</display-name>
  
  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
  	</init-param>
  </servlet>

	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  	
</web-app>

disparcher-servlet.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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">  
       
       <!-- 定义要扫描 controller的包 -->
       <context:component-scan base-package="com.controller" />

       <mvc:default-servlet-handler /> 
       <!-- 启动注解驱动 SpringMVC 功能 -->
       <mvc:annotation-driven />

       <!-- 配置视图解析器解析路径 -->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
              <!-- 定义视图存放路径 -->
              <property name="prefix" value="/jsp/" />
              <!-- 定义视图后缀 -->
              <property name="suffix" value=".jsp" />
       </bean>
       
</beans>

HelloController.java

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller		//注明此类为控制器,配置bean到上下文中
public class HelloController {
	
	@RequestMapping(value="/hello")	//映射该路径下的访问请求到此方法下处理
	public String hello(ModelMap model){
		
		System.out.println("hello controller");
		
		//业务处理逻辑编写,调用model层操作
		/* …… */
		
		model.addAttribute("paramName","Hello,This is my first spring MVC programe!");
		
		return "index";	//返回相应的视图文件
	} 
}

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <h2>${paramName}</h2>
  </body>
</html>

结果

猜你喜欢

转载自blog.csdn.net/zero_130/article/details/81333371
今日推荐