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>
结果
还没有评论,来说两句吧...