概要:

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

(控制器Controller)- 负责转发请求,对请求进行处理。

(视图View) - 界面设计人员进行图形界面设计。

(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

MVC的优点
1.低耦合性
  视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
  随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
  MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
  使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
  分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
  由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
环境搭建:

一、创建一个web项目springMVC,修改编码方式:utf-8.

二、在web-INF下lib导入所需.jar包。(本次加入包有限只为基本环境使用)

三、环境搭建于测试

3.1在src下建包ckx.spring.mvc.controller

在包下new一个Controller测试类TestController.java代码如下:

package ckx.spring.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class TestController { @RequestMapping("/test001")
public ModelAndView test001(ModelAndView ModelAndView){
ModelAndView.setViewName("test001");
return ModelAndView;
}
}

3.2根据返回的视图名在web-root下new一个test001.jsp,直观期间修改body里面内容:This is test001 page.

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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 'test001.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>
This is test001 page. <br>
</body>
</html>

3.3在web.xml配置核心控制器dispatchservlet:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 初始化DispatcherServlet -->
<servlet>
<!--servlet名称-->
<servlet-name>springmvc</servlet-name>
<!--springmvc核心控制器DispatcherServlet-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
<!--设置启动顺序,启动的时候就加载这个servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--配置拦截形式 "/"拦截所有-->
<url-pattern>/</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

3.3在web-inf下创建springmvc-servlet.xml配置文件。

  3.3.1配置解析:

    1、因为在MVC中常用到注释因此要有开启注释的驱动:<mvc:annotation-driven></mvc:annotation-driven>

    2、配置对controller的扫描:<context:component-scan base-package="ckx\spring\mvc\controller"></context:component-scan>注意路径

    3、配置解析类:

<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!--开启注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> <!--扫描controller-->
<context:component-scan base-package="ckx\spring\mvc\controller"></context:component-scan> <!-- 定义viewResolver实例,视图解释类 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 注入viewClass实例 -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<!-- <!-- URL前缀 ,在jsp直接位于web-INF下是直接用“/”即可,若在web-INF下文件夹,还需拼接--> -->
<property name="prefix" value="/" />
<!-- URL后缀 找出我们需要的视图,以.jsp文件 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>

  3.3.2修改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>
<a href="<%=path %>/test001">跳转test001</a> <br/><br/>
</body>
</html>

  3.3.3在tomcat中添加项目springMVC后在浏览器地址栏运行localhost:8080/springMVC:

  3.3.4点击超链接跳转到test001.jsp:

  3.3.5完成基本配置实现页面跳转。

  3.4.1页面带值传递,在test001方法中加入数据模型参数model(model默认作用于request)

      注意导入正确的包:import org.springframework.ui.Model;

@RequestMapping("/test001")
public ModelAndView test001(ModelAndView ModelAndView,Model model){
ModelAndView.setViewName("test001");
model.addAttribute("name","凯特.温斯莱特");
return ModelAndView;
}

  3.4.2刷新test001.jsp,实现带值跳转:

  3.5已返回字符串的形式跳转页面(代码更为简洁,这里使用test001页面,只是改变跳转请求。):

@RequestMapping("/test002")
public String test002(Model model){
model.addAttribute("name", "杨千嬅");
return "test001";
}

    在欢迎页加test002跳转请求

<a href="<%=path %>/test002">跳转test002</a> <br/><br/>

    重启服务器,点击test002超链接,实现用返回字符串的方法实现带数据跳转:

  3.6重定向redirect(注意重定向是要加.jsp后缀名,或者return "redirect:/test002";)

@RequestMapping("/test003")
public String test003(Model model){
model.addAttribute("name", "RedirectTest003");
return "redirect:test002.jsp";
}

    new一个 test002.jsp:

  <body>
This is test002 page. <br></br>
${name} </body>

    index.jsp添加超链接:

<a href="<%=path %>/test002">跳转test002</a> <br/><br/>

    重启服务,跳转test003实现重定向(重定向是get请求注意地址栏):

四、参数解析,从页面提取数据到后台:

4.1在controller添加一个登陆的方法login:

@RequestMapping("/login")
public String login(String username , String password){
System.out.println("username:"+username);
System.out.println("password:"+password);
return "index";
}

    new一个login.jsp:

<body>
<p align="center">
<form action="<%=path %>/login" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="提交">
</form>
</p>
</body>

    重启服务器,运行localhost:8080/login.jsp:

    输入用户名、密码提交,查看控制台获取数据成功:

但是这种方法在面对多字段时会使方法参数过于冗余,这时就要引进用类做参数了:

创建一个注册页面:

<body>
<p align="center">
<form action="<%=path %>/register" method="post">
用户名:<input type="text" name="username"><br/>
性别:<input type="text" name="sex"><br/>
年龄:<input type="text" name="age"><br/>
政治面貌:<input type="text" name="zzmm"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="注册">
</form>
</p>
</body>

创建一个实体类用来保存这些字段参数:

package ckx.spring.mvc.entity;

public class User {
private String username;
private String sex;
private int age;
private String zzmm;
private String password; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getZzmm() {
return zzmm;
}
public void setZzmm(String zzmm) {
this.zzmm = zzmm;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

    新增一个请求方法register,以user类作为参数:

@RequestMapping("/register")
public String register(User user){
System.out.println("username:"+user.getUsername());
System.out.println("username:"+user.getAge());
System.out.println("username:"+user.getSex());
System.out.println("username:"+user.getZzmm());
System.out.println("username:"+user.getPassword());
return "index";
}

    重启服务器,运行register.jsp页面,并填入数据:

    点击提交查看控制台获取数据成功:

springMVC环境的搭建(一)的更多相关文章

  1. springmvc环境的搭建

    最近应公司要求,用了2天时间学了springmvc的搭建,就简单总结一下: springmvc和struts2的比较,因为我是学过struts的,它们都是基于mvc模式而设计的web层框架 它们最大的 ...

  2. spring入门(五)【springMVC环境搭建】

    springMVC作为spring的一个WEB组件,是一个MVC的思想,减少了WEB开发的难度,现介绍springMVC环境的搭建,具体的原理放在后面介绍.用过框架的朋友都知道要在WEB项目中使用一个 ...

  3. SpringMvc环境搭建(配置文件)

    在上面的随笔里已经把搭建springmvc环境的基本需要的包都下下来了,拉下来就是写配置文件了. 下面左图是总的结构,右图是增加包 一.最开始当然是web.xml文件了,这是一个总的宏观配置 < ...

  4. SpringMVC环境搭建和详解

    1.Spring容器和SpringMVC容器是父子容器 1.1 SpringMVC容器可以调用Spring容器中的所有内容 1.2 图示 2.SpringMVC环境搭建 1.导入jar包 2.在web ...

  5. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  6. SpringMVC 环境搭建

    SpringMVC 框架环境搭建操作步骤如下: 创建动态 Web 项目 配置 Tomcat 服务器 配置 SpringMVC 前端控制器 <?xml version="1.0" ...

  7. Springmvc+Spring+Hibernate搭建方法

    Springmvc+Spring+Hibernate搭建方法及example 前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码 ...

  8. SSM框架——Spring+SpringMVC+Mybatis的搭建

    1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One  ...

  9. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  10. CentOS7 + mono +Jexus 环境的搭建

    CentOS7的安装和配置 1,从http://www.centos.org/下载CentOS7的镜像,并在VMWare中创建该镜像的虚拟机,为方便操作,把虚拟机的网络连接设置为桥接模式:在安装过程中 ...

随机推荐

  1. 编写 bzt 脚本的正确姿势

    这是今年1月24日的旧文,发现没在这里发过,就搬运过来了. 声明 本文讨论的使用场景主要为使用已有的 jmx 脚本,并配合 json 对 jmx 脚本进行部分参数的动态修改. 只补充一些官方文档上没有 ...

  2. Docker镜像仓库Harbor之Swagger REST API整合配置

    转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...

  3. vue this.$router.push query传递对象方法

    this.$router.push({ path: '/home', query: { params: JSON.stringify({ name: 'lokka', age: 18 }) } }); ...

  4. Mybatis PageHelper 使用的注意事项

    什么时候会导致不安全的分页? PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的. 只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查 ...

  5. SpringMVC入手项目注解版

    SpringMVC入手项目注解版 1.创建Maven项目在pom.xml文件引入相关的依赖 <dependencies> <dependency> <groupId> ...

  6. 生产系统CPU飙高问题排查

    现状 生产系统CPU占用过高,并且进行了报警 排查方法 执行top命令,查看是那个进程导致的,可以确定是pid为22168的java应用导致的 执行top -Hp命令,查看这个进程的那个线程导致cpu ...

  7. 6.MongoDB系列之特殊索引和集合类型

    1. 地理空间索引及全文搜索 与Elasitcsearch一样,MongoDB同样支持地理空间索引及全文搜索,由于选型常用ES而非MongoDB此处略过 2. TTL索引 首先先了解下固定集合,其类似 ...

  8. Vue中使用Switch开关用来控制商品的上架与下架情况、同时根据数据库商品的状态反应到前台、前台修改商品状态保存到数据库

    一般后台对商品的信息管理.包含商品的上架与下架.为了提高用户的体验.将商品上下架的操作做成开关的形式.同时后台数据库中保存的商品状态能够根据开关状态改变. 1.效果展示 这种效果:== 当开关是开启状 ...

  9. 前端框架Vue------>第一天学习(2) v-if

    API:https://cn.vuejs.org/v2/api/#key 文章目录 5.条件渲染 5.1 . v-if 5.2 . v-else-if 6 .列表渲染 7 .事件监听 5.条件渲染 5 ...

  10. 那齐博x3又什么什么?

    那齐博x3又什么什么? 齐博x3是齐博X1/齐博x2之后的升级版本. 主要优化圈子系统