第一章回顾JavaWeb中的MVC设计模式

1)MVC这种设计模式,不光运用于Web领域,而且也能用于非Web领域

2)今天说的MVC特指一种表现层设计模式,不限于Java语言

第二章回顾struts2+Spring开发

1)需求:学生注册【add.jsp->StudentAction.java->addOK.jsp】

2)struts2框架有如下特点:

每次请求action时,都创建action实例

action类一成不变的直接或间接继续ActionSupport类

action类中的业务控制方法总是相类似的签名且无参

action类中,接收参数要用实例变量和对应的set方法或set/get方法

struts.xml配置文件,必须以struts.xml命名,且放在src目录下

.. .. ..

第三章什么是springmvc,它与spring有什么关系

springmvc属于spring框架的后续产品,用在基于MVC的表现层开发,类似于struts2框架

参见<<springmvc与spring的关系.JPG>>

第四章初识springmvc工作流程

参见<<初识springmvc工作流程.JPG>>

第五章 springmvc快速入门(XML版本)

1)springmvc快速入门(传统版)

步一:创建springmvc-day01这么一个web应用

步二:导入springioc,springweb , springmvc相关的jar包

步三:在/WEB-INF/下创建web.xml文件

<!-- 注册springmvc框架核心控制器 -->

<servlet>

<servlet-name>DispatcherServlet</servlet-name>

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

</servlet>

<servlet-mapping>

<servlet-name>DispatcherServlet</servlet-name>

<url-pattern>*.action</url-pattern>

</servlet-mapping>

步四:创建HelloAction.java控制器类

/**

* 控制器

* @author AdminTC

*/

public class HelloAction implements Controller{

/**

* 业务方法

*/

public ModelAndView handleRequest(HttpServletRequest requqest,HttpServletResponse response) throws Exception {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("message","这是我的第一个springmvc应用程序");

modelAndView.setViewName("/jsp/success.jsp");

return modelAndView;

}

}

步五:在/WebRoot/下创建jsp/success.jsp

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>这是我的第一个springmvc应用程序</title>

</head>

<body>

success.jsp<br/>

${message}

</body>

</html>

步六:在/WEB-INF/创建DispatcherServlet-servlet.xml配置文件,xml头部信息与spring.xml相同

注意:该配置文件的命名规则:web.xml文件中配置的<servlet-name>的值-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:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

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

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

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

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

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

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

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

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

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

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

">

<!-- 控制器(程序员) -->

<bean name="/hello.action" class="cn.itcast.javaee.springmvc.base.HelloAction"></bean>

<!-- 映射器(框架) -->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 适配器(框架) -->

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

<!-- 视图解析器(框架) -->

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

</beans>

步七:部署web应用到tomcat中,通过浏览器访问如下URL:

http://127.0.0.1:8080/springmvc-day01/hello.action

第六章加载自定义目录下的springmvc.xml配置文件

在默认情况下:springmvc框架的配置文件必须叫<servlet-name>-servlet.xml

且必须放在/WEB-INF/目录下,我们可以在web.xml文件中,为DispatcherServlet配置一个初始化参数,

让它去我们指定的目录下加载springmvc.xml配置文件,web.xml代码如下:

<!-- 注册springmvc框架核心控制器 -->

<servlet>

<servlet-name>DispatcherServlet</servlet-name>

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

<init-param>

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

<param-value>/WEB-INF/classes/cn/itcast/javaee/springmvc/config/springmvc.xml</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>DispatcherServlet</servlet-name>

<url-pattern>*.action</url-pattern>

</servlet-mapping>

如果springmvc.xml配置文件放在src目录下,web.xml代码如下:

<!-- 注册springmvc框架核心控制器 -->

<servlet>

<servlet-name>DispatcherServlet</servlet-name>

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

<init-param>

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

<param-value>classpath:spring.xml</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>DispatcherServlet</servlet-name>

<url-pattern>*.action</url-pattern>

</servlet-mapping>

第七章视图解析器InternalResourceViewResolver【解析视图逻辑名对应的真实路径】

ModelAndView对象中即可以封装真实视图路径名,也可以封装视图路径的逻辑名,springmvc.xml

代码如下:

<!-- 视图解析器(框架) -->

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

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

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

</bean>

Action类代码如下:

modelAndView.setViewName("success");

第八章映射器Mapping【什么样的请求交给Action

1)  org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(核心)

将程序员定义的Action所对应的<bean>标签的name属性作为请求路径

<!-- 注册控制器(程序员) -->

<bean name="/add.action" class="cn.itcast.javaee.springmvc.mapping.UserAction"></bean>

<!-- 注册映射器(handler包)(框架) -->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

2)  org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

/delete.action和/update.action和/find.action请求路径都交由<bean>标签为id的Action,即

多个路径对应同一个Action

<!-- 注册控制器(程序员) -->

<bean id="userActionID" class="cn.itcast.javaee.springmvc.mapping.UserAction"></bean>

<!-- 注册映射器(handler包)(框架) -->

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/delete.action">userActionID</prop>

<prop key="/update.action">userActionID</prop>

<prop key="/find.action">userActionID</prop>

</props>

</property>

</bean>

 

第九章适配器AdapterAction实现什么接口】

1)  Action实现Controller接口

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

public class EmpAction implements Controller{

public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {

System.out.println("EmpAction::handleRequest");

request.setCharacterEncoding("UTF-8");

String username = request.getParameter("username");

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("message",username);

modelAndView.setViewName("/jsp/success.jsp");

return modelAndView;

}

}

第十章控制器ControllerAction继承什么类】

1)  org.springframework.web.servlet.mvc.ParameterizableViewController

如果请求是/hello.action的请求路径,则直接跳转到/jsp/success.jsp页面,不经过程序员定义的控制器Action

<!-- /index.action请求,直接转发到/index.jsp页面 -->

<bean name="/index.action" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<property name="viewName" value="/index.jsp"/>

</bean>

<!-- 注册视图解析器(view包)(框架)

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

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

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

</bean>

-->

2)  org.springframework.web.servlet.mvc.AbstractCommandController

能够以实体的形式,收集客户端参数

public class AdminAction extends AbstractCommandController{

public AdminAction(){

this.setCommandClass(Admin.class);

}

@Override

protected ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object obj, BindException bindException)throws Exception {

System.out.println("AdminAction::handle");

ModelAndView modelAndView = new ModelAndView();

Admin admin = null;

if(obj instanceof Admin){

admin = (Admin) obj;

}

modelAndView.addObject("username",admin.getUsername());

modelAndView.addObject("gender",admin.getGender());

modelAndView.addObject("hiredate",admin.getHiredate());

modelAndView.setViewName("/jsp/success.jsp");

return modelAndView;

}

}

<!-- 请求处理类 -->

<bean name="/add.action" class="cn.itcast.javaee.springmvc.controller.AdminAction">

</bean>

<!-- 映射器 -->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">

</bean>

第十一章日期转换器和编码过滤器

1)  在默认情况下,springmvc不能将String类型转成Date类型,必须自定义类型转换器

public class AdminAction extends AbstractCommandController{

@Override

protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {

binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));

}

2)spring提供的,专用于解决POST提交中文乱码问题,需要在web.xml文件中配置

<!-- 编码过滤器 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

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

</filter-mapping>

第十二章 springmvcstruts2的区别

1)springmvc的入口是一个servlet,即前端控制器,例如:*.action

struts2入口是一个filter过虑器,即前端过滤器,例如:/*

2)springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例

struts2是基于类开发,传递参数是通过类的属性,只能设计为多例

3)springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成

ModelAndView对象,最后又将模型数据通过request对象传输到页面

struts采用值栈存储请求和响应的数据,通过OGNL存取数据

.. …

第十三章员工管理系统--增加员工

技术:springmvc + spring + jdbc + oracle

30、springmvc的更多相关文章

  1. SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...

  2. 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解

    从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, res ...

  3. java maven、springmvc、mybatis 搭建简单Web项目学习笔记

    前言: 空余的时间,学学 Java,没准哪天用的到: 环境搭建折腾了好几天,总算搞顺了,也做个学习笔记,以防后面会忘记: 一.安装文件及介绍 JDK:jdk1.8.0 77 eclipse-maven ...

  4. (转)Dubbo与Zookeeper、SpringMVC整合和使用

    原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...

  5. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

  6. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    原文链接:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服 ...

  7. 160906、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

  8. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)转

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

  9. spring、springmvc、mybatis整合笔记

    这段时间上一个项目刚做完,下一个项目还没开始,趁这个时候来认真总结一下上个项目使用的ssm开发框架.由于,项目中关于使用ssm这部分的代码和配置是我们项目的整体架构师一个独立完成的,我们只负责业务部分 ...

随机推荐

  1. 零售业数据分析的媒介——BI工具

    当你需要从一堆复杂庞大的数据中分析出有用的信息和结论的时,想必你一定觉得力不从心:数据的冗余使得你分析起来困难重重,怎么办呢?今天我们就来讲一下使数据分析变得简单有效的“手段”. 对于当今的中国零售行 ...

  2. 第十篇 Integration Services:高级事件行为

    本篇文章是Integration Services系列的第十篇,详细内容请参考原文. 简介在前一篇, we introduced fault tolerance by examining method ...

  3. 第一篇 SQL Server安全概述

    本篇文章是SQL Server安全系列的第一篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  4. RANSAC随机一致性采样算法学习体会

    The RANSAC algorithm is a learning technique to estimate parameters of a model by random sampling of ...

  5. re模块使用

    import re listall = "adkr20xcv3\actad4/" result = re.search('\w+',listall) print result.gr ...

  6. MQ基础

    1. 什么时候用activeMQ 在大量场合,ActiveMQ和异步消息对系统架构有意味深长的影响.下面举一些例子: 1). 异构系统集成 2). 取代RPC 3). 应用间的解耦 4). 事件驱动架 ...

  7. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

  8. 30个最常用css选择器解析(zz)

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...

  9. java io读书笔记(5) Writing Bytes to Output Streams

    outputstream类是所有的字符输出类的父类,他是一个抽象类. 对于OutputStream类来说,其最基础的方法就是:write(). public abstract void write(i ...

  10. java mock

    一篇文章: 5分钟了解Mockito 一.什么是mock测试,什么是mock对象? 先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例. ...