springMVC 第一章

一、分层结构的项目

组成方式:

表示层:页面,Servlet

业务层:业务逻辑类(service)

持久层:与数据库交互的类(dao)

程序执行的过程:表示层->servlet->业务层->持久层->数据库,数据全部封装在entity实体类中。

二、MVC

M:数据业务模型(Model),负责数据的业务处理及持久化工作。

V:视图(view),也就是所谓的页面

C:控制器(controller),是客户端的请求能够到达的地方,处理客户端的请求及响应。

与分层结构的对比,基本上项目框架结构不变,只是把层的划分做了一些细微的调整。

M=业务层及持久层

V=页面

C = Servlet, 用了MVC的相关框架后,改成普通的class类。

三、MVC 框架

运用了MVC框架的项目只能是Web项目。

常用的框架:SpringMVC框架,Struts2 框架。

  1. 配置比较麻烦,SpringMVC框架相对要简单些。
  2. 与其它框架的整合容易出现兼容性问题。SpringMVC框架是Spring框架的一个子集,没有兼容性问题。
  3. 前几年出现一个比较大安全漏洞,导致信任度下降。

四、SpringMVC框架

Spring web MVC 是spring框架一个非常重要的功能。实现了MVC结构,便于简单快速开发MVC结构的Web程序。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架

五、核心API:

DispatcherServlet (前端控制器,所有请求入口),对请求进行分发。

HandlerMapping(控制器,请求派发) 解析请求的URL,找到具体的控制器类。

Controller(控制器,请求处理流程) 处理请求.

ModelAndView(模型,封装业务处理结果和视图)

ViewResolver(视图,视图显示处理器) ,找到具体的视图页面。

View 视图页面,返回给客户端的页面。

六、Springmvc框架的使用步骤:

  1. 导入相关包,SpringMVC框架是Spring框架的子集,它所需要的包都在Spring框架的Jar包中,从中选择相关的jar包放在lib目录下,还需要再添加一个辅助包:commons-logging-1.1.1.jar
  1. 添加配置文件并进行配置

配置文件默认的路径在WEB-INF目录下,文件名的命名规则是:XXXX-servlet.xml,不能变,XXXX表示DispatcherServlet 前端控制器在Web.xml配置文件配置时的Servlet的逻辑名称,但是开发时不可能放在这里,都会放在某个目录下进行统一管,则配置文件的名称可能任意,但也建议命名为:springMVC-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-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

<!-- 配置视图解析器,把控制器的视图名称解析出具体视图文件路径.

bean节点表示创建一个class属性中表示的类的对象,对象命名为id属性中的值,此对象的作用是对控制器中所给定的视图名称进行

映射,找到具体的视图文件路径

比较在控制器中指定视图名称叫:gradeList,则映射出的视图文件路径为:  /gradeList.jsp ,就会去项目中拿视图文件

-->

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 给对象的属性赋值 -->

<property name="prefix" value="/"/>

<property name="suffix" value=".jsp"/>

</bean>

</beans>

  1. 在Web.xml配置文件中启动SpringMVC,也就是配置前端控制器DispatcherServlet 。

<!-- springMMVC的前端控制器的配置,它是一个Servlet -->

<servlet>

<servlet-name>springMVC</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- 当配置文件不在默认路径下(WEB-INF)时,则需要设置配置文件的路径 -->

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:config/springMVC-servlet.xml</param-value>

</init-param>

<!-- 下面的配置让Servlet随项目启动时就加载 -->

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<!-- SpringMVC的拦截设置为:/ 表示拦截所有请求,错误的设置是:/*,不推荐 : .cation或.do 这些配置方式,不符合REST风格 -->

<url-pattern>/</url-pattern>

</servlet-mapping>

  1. 添加控制器类,处理请求

SpringMVC 的控制器类,替代了以前的Servlet类,控制器类的添加有3种:注解,继承,实现接口。重点是注解方式。

注解配置:

需要在SpringMVC的主配置文件中配置启动注解的启动及控制器类的扫描解析。

<!-- 启动注解 -->

<mvc:annotation-driven/>

<!-- 扫描此包中所有的@Controller注解的类,创建这些类的对象 -->

<context:component-scan base-package="com.sgxy.controller"/>

控制器类:

package com.sgxy.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

/**

* 这是一个普通的类,建议加上Controller后缀

* 再加上@Controller注解,则变成了一个控制器,替代了以前的Servlet

* @author Administrator

*

*/

@Controller

@RequestMapping("grade")  //设置访问到此控制器类的URL,并注册到SpringMVC框架中。

public class GradeController {

@RequestMapping("list") //设置访问到此方法的URL

public ModelAndView list() {

//如果需要数据库中的数据,则调用底层方法取数据,

//返回的是视图的名称

return new ModelAndView("gradeList");

}

}

实现接口

控制器类:

package com.sgxy.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

/**

* 采用实现Controller接口的方法来创建一个控制器。

* 不推荐使用,因为这个接口中只能一个方法,导致针对一个表的操作需要大量的控制器。

* @author Administrator

*

*/

public class TeacherController implements Controller {

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)

throws Exception {

return new ModelAndView("teacherList");

}

}

配置文件中的URL配置处理:

<!-- 实现接口的方式实现控制器的配置  name:表示访问的URL -->

<bean name="/teacher/list" class="com.sgxy.controller.TeacherController"></bean>

继承的方式

控制器:

package com.sgxy.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class SubjectController extends MultiActionController {

public ModelAndView list(HttpServletRequest request,HttpServletResponse response) {

return new ModelAndView("subjectList");

}

public ModelAndView add(HttpServletRequest request,HttpServletResponse response) {

return new ModelAndView("subjectAdd");

}

}

配置文件中的配置:

<!-- 继承类的方式来实现控制器, 参数方法名称解析器,设置请求方法的名称-->

<bean id="parameterMethodNameResolver"

class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

<property name="paramName" value="do"/>

</bean>

<!-- 继承方法的控制器的配置,name:表示请求的URL -->

<bean name="/subject" class="com.sgxy.controller.SubjectController">

<!-- 设置访求访问的参数名称解析器对象,引用上面的解析器对象的ID属性值 -->

<property name="methodNameResolver">

<ref bean="parameterMethodNameResolver"/>

</property>

</bean>

七、MVC的容器

配置文件在加载时,会创建一些配置文件中配置的对象,这些对象会存储在SpringMVC这个框架的对象容器中,这个容器叫IOC容器,它属于Spring框架的 IOC容器的子容器。所以Spring的IOC和SpringMVC的IOC容器具有父子关系,Spring容器为父容器,SpringMVC为子容器,子容器可以引用父容器中的Bean,而父容器不可以引用子容器中的Bean。因为父容器先创建,再创建子容器。

八、找jar包的源码文件

错了:应该选

九、dtd 与 xsd

DTD=类型定义(Documnet Type Definition)

DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。
DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。

一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
但是DTD 是使用非 XML 语法编写的
DTD 不可扩展,不支持命名空间,只提供非常有限的数据类型

XSD=XML结构定义 ( XML Schemas Definition )
XML Schema语言也就是XSD。XML Schema描述了XML文档的结构。

可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。
一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。
XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
XML Schema的优点:
1) XML Schema基于XML,没有专门的语法 
2) XML可以象其他XML文件一样解析和处理 
3) XML Schema支持一系列的数据类型(int、float、Boolean、date等) 
4) XML Schema提供可扩充的数据模型。 
5) XML Schema支持综合命名空间 
6) XML Schema支持属性组。

springMVC 第一章的更多相关文章

  1. SpringMVC从入门到精通之第一章

    第一节 简介:SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合.SpringMVC是基于MVC的WEB框架.MVC设计模式在B/S下的应用: ...

  2. 《跟我学Shiro》学习笔记 第一章:Shiro简介

    前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...

  3. 【第一章】 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  4. 第一章 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  5. SpringBoot | 第一章:第一个SpringBoot应用

    springboot简单介绍 概述 SpringBoot的核心功能 优缺点 优点 缺点 工程搭建 创建项目 项目结构 pom依赖 主入口 编写controller 启动应用 总结 老生常谈 sprin ...

  6. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  7. MyBatis3.2从入门到精通第一章

    第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...

  8. Nova PhoneGap框架 第一章 前言

    Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...

  9. 第一章 MYSQL的架构和历史

    在读第一章的过程中,整理出来了一些重要的概念. 锁粒度  表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...

随机推荐

  1. Linux 嵌入式 开发环境 交叉编译安装

    1.安装 Ubuntu 系统 安装完毕,系统 提示 重启,这个时候 请拔掉U盘,进行重启 OK. 2.安装 NFS 服务 3.安装 openssh服务 4.开启openSSH服务 5.就可以使用 Wi ...

  2. LINUX升级PHP版本至5.4.26

    参考网址:http://www.itbulu.com/wdcp-php54.html文件:链接:http://pan.baidu.com/s/1slbbNxr 密码:s0yb 1.运行下载PHP版本文 ...

  3. uboot中ftd命令

    可以从u-boot官网源码下载一个比较新的u-boot, 查看它的cmd/fdt.cftp://ftp.denx.de/pub/u-boot/ fdt命令使用示例nand read.jffs2 320 ...

  4. Xcode 控制台打印Unicode字符串转换为中文

    在Xcode的控制台里直接打印一个数组或者字典,输出的都是一些Unicode的编码,不方便调试.    要想看到中文,则要去获取对应的key或者数组下标.得到具体某一个对象才能看到中文,给我们调试起来 ...

  5. react 配置开发环境

    一:先自行下载安装node和npm 二:cnpm install create-react-app -g 三:create-react-app my-project 四:cd my-project  ...

  6. 【PTA 天梯赛】L3-002 特殊堆栈(二分)

    堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除).本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的 ...

  7. Linux基础-1.Linux命令及获取帮助

    1.Linux命令的格式 1)了解Linux命令的语法格式: 命令 [选项] [参数] 2)掌握命令格式中命令.选项.参数的具体的含义 a)命令:告诉Linux(UNIX)操作系统做(执行)什么 b) ...

  8. Django学习笔记6(iframe、外键插入)

    1.{%include 'index.html'%i} 平时很好用的iframe在django里面的不是很好用 django里面提供了{%include 'index.html'%i}的方式来取代了i ...

  9. vim编辑器操作汇总

    VIM - Vi IMproved 7.4 编辑器操作汇总 vim   [参数]   [文件 ..]         编辑指定的文件 或: vim   [参数]    -     从标准输入(stdi ...

  10. Kafka(1)-概述

    一. 内部原理 1. 点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端.这个模型的特 ...