系统标准的三层架构包括: 表现层、业务层、持久层。
表现层: WEB层,用来和客户端进行数据交互的。表现层一般采用MVC的设计模式。
业务层: 处理具体的业务逻辑。
持久层: 操作数据库。
Model View Controller 模型视图控制器,每个部分各司其职。
Model 数据模型,JavaBean的类,用来进行数据封装。
View HTML用来展示数据给用户。
Controller 接收用户的请求,整个流程的控制器,用来进行数据的校验等。
配置Spring MVC的xml配置文件
<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"
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">
<context:component-scan base-package="cn.itcast">context:component-scan>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/">property>
<property name="suffix" value=".html">property>
bean>
<mvc:annotation-driven>mvc:annotation-driven>
beans>
配置web.xml配置文件
<web-app>
<display-name>Archetype Created Web Applicationdisplay-name>
<servlet>
<servlet-name>dispatcherServletservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springmvc.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>dispatcherServletservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.htmlurl-pattern>
servlet-mapping>
web-app>
注意 在前端控制器org.springframework.web.servlet.DispatcherServlet中,默认是jsp页面,DispatcherServlet将HTML页面给屏蔽了。如果采用HTML页面,需要添加配置以下:
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.htmlurl-pattern>
servlet-mapping>
编写控制器类
package cn.itcast.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 控制器类
*/
@Controller
public class HelloController {
@RequestMapping(path="/hello")
public String sayHello(){
System.out.println("Hello Spring MVC");
return "success";
}
}
编写访问页面(这里使用了HTML页面,后面的流程分析使用了jsp页面,本质上并没有区别)
<html lang="en">
<head>
<meta charset="UTF-8">
<title>入门程序title>
head>
<body>
<h3>入门程序h3>
<a href="hello">入门程序a>
body>
html>
跳转页面
<html lang="en">
<head>
<meta charset="UTF-8">
<title>成功title>
head>
<body>
<h3>成功了h3>
body>
html>
入门案例流程总结
Spring MVC框架基于组件方式执行流程
作用: 建立请求URL和处理请求方法间的对应关系。
作用类上:请求URL的第一级访问目录。
作用方法上:请求URL的第二级访问目录。
package cn.itcast.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 请求参数绑定
*/
@Controller
@RequestMapping(path = "/param")
public class ParamController {
@RequestMapping(path = "/testParam")
public String testParam(String username,String password){
System.out.println("执行了");
System.out.println("用户名:" + username);
System.out.println("密码:" + password);
return "success";
}
}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title>
head>
<body>
<a href="param/testParam?username=徐一琳&password=123">请求参数绑定a>
body>
html>
解决中文乱码的过滤器
<filter>
<filter-name>characterEncodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>characterEncodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
配置类型转换器
<bean id="converterService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itcast.utils.StringToDateConverter"/>
set>
property>
bean>