一、C\S和B\S
- C/S
C/S 是 Client/Server 的简写,简称客户端/服务器模式。例如 QQ 是客户端和服务器模式,首先安装一个客户端到个人电脑,然后登入到腾讯服务器。
缺点:更新不易,例如 3 亿人在用 QQ 话,如果有新版本的话,需要更新 3 亿个客户端
优点:速度快,功能强
- B/S
Browser/Server 的简写,简称浏览器/服务器模式。这种模式不需要安装特定客户端只要有一个浏览器即可。
优点:更新容易,例如某个网站有新版了,浏览器不需要更新,就能看到新版本
缺点:速度慢,功能有限(随着 HTML5 出现,功能问题已经很强)
- MVC分工
1. Model:负责数据的处理(增删改查等操作)
2. 前端控制器:负责转发
3. 后端控制器:负责处理具体请求
4. 视图:给用户提供使用软件的界面
二、Spring Mvc 初体验
-
新建war类型的maven项目
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.xcu</groupId> <artifactId>01springmvcdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <!-- 控制乱码问题 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <!-- 修改版本号 --> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.8.RELEASE</version> </dependency> </dependencies> </project>
- 这个时间会报错,为了解决该错误,我们需要添加 web.xml

- 在 web.xml 中配置前端控制器
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!-- 前端控制器:类似迎宾 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 因为顾客是否有人来,迎宾都要提前准备好迎客 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 谁来了都迎接 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
- 编写后端控制器,即controller类
@Controller // 告诉后端控制器
public class HelloWorldController {
@RequestMapping("/hw01") // 配置上地址。类似包厢上必须有号
@ResponseBody
public String hw01() {
return "hello world!";
}
@RequestMapping("/hw02")
public String hw02() {
return "hello world222!";
}
- 在WEB-INF下新建spingmvc-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"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
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.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- 用注解配置后端控制器 -->
<context:component-scan base-package="cn.edu.xcu.ssm"></context:component-scan>
<!-- 因为能产生动态web技术有: jsp,freemarker,thymeleaf等,因而你需要告诉springmvc你视图放置在那里,是什么技
术:视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<!-- 告诉到那里找 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 告诉后缀名 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
- 添加视图解析器所需要的依赖
<!--视图解析器所需要的依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>