当前位置:文档之家› SpringMVC配置详解

SpringMVC配置详解

SpringMVC配置详解
SpringMVC配置详解

spring MVC配置详解

现在主流的Web MVC框架除了Struts这个主力外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。

一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)

1. jar包引入

Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-n odep-2.1_3.jar

Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antl r-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar包

SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是Di spatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。

DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherServl et的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。

spring

org.springframework.web.servlet.DispatcherServlet

-->

1

spring

*.do

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath:config/applicationContext.xml

spring-servlet.xml配置

spring-servlet这个名字是因为上面web.xml中标签配的值为spri ng(spring),再加上“-servlet”后缀而形成的spri ng-servlet.xml文件名,如果改为springMVC,对应的文件名则为springMVC-servlet.x ml。

xmlns:xsi="https://www.doczj.com/doc/a213866406.html,/2001/XMLSchema-instance" xmlns:p="http://www. https://www.doczj.com/doc/a213866406.html,/schema/p"

xmlns:context="https://www.doczj.com/doc/a213866406.html,/schema/context"

xsi:schemaLocation="https://www.doczj.com/doc/a213866406.html,/schema/beans http://www.s https://www.doczj.com/doc/a213866406.html,/schema/beans/spring-beans-3.0.xsd

https://www.doczj.com/doc/a213866406.html,/schema/aop https://www.doczj.com/doc/a213866406.html,/ schema/aop/spring-aop-3.0.xsd

https://www.doczj.com/doc/a213866406.html,/schema/tx https://www.doczj.com/doc/a213866406.html,/s chema/tx/spring-tx-3.0.xsd

https://www.doczj.com/doc/a213866406.html,/schema/context http://www.springframework.

org/schema/context/spring-context-3.0.xsd">

DispatcherServlet会利用一些特殊的bean来处理Request请求和生成相应的视图返回。

关于视图的返回,Controller只负责传回来一个值,然后到底返回的是什么视图,是由视图解析器控制的,在jsp中常用的视图解析器是InternalResourceViewResovler,它会要求一个前缀和一个后缀

在上述视图解析器中,如果Controller返回的是blog/index,那么通过视图解析器解析之后的视图就是/jsp/blog/index.jsp。

主要是说说Controller.

一个类使用了@Controller进行标记的都是Controller

package controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;import org.springframework.web. bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.R equestParam;

import https://www.doczj.com/doc/a213866406.html,er;

@Controller //类似Struts的Action public class TestController {

@RequestMapping("test/login.do") // 请求url地址映射,类似Struts的action-mapp ing

public String testLogin(@RequestParam(value="username")String username, Stri ng password, HttpServletRequest request) {

// @RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false)

// @RequestParam可简写为:@RequestParam("username")

if (!"admin".equals(username) || !"admin".equals(password)) {

return "loginError"; // 跳转页面路径(默认为转发),该路径不需要包含spring-s ervlet配置文件中配置的前缀和后缀 }

return "loginSuccess";

}

@RequestMapping("/test/login2.do")

public ModelAndView testLogin2(String username, String password, int age){ // request和response不必非要出现在方法中,如果用不上的话可以去掉

// 参数的名称是与页面控件的name相匹配,参数类型会自动被转换

if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return new ModelAndView("loginError"); // 手动实例化ModelAndView完成跳转页面(转发),效果等同于上面的方法返回字符串 }

return new ModelAndView(new RedirectView("../index.jsp")); // 采用重定向方式跳转页面

// 重定向还有一种简单写法

// return new ModelAndView("redirect:../index.jsp"); }

@RequestMapping("/test/login3.do")

public ModelAndView testLogin3(User user) {

// 同样支持参数为表单对象,类似于Struts的ActionForm,User不需要任何配置,直接写即可

String username = user.getUsername();

String password = user.getPassword();

int age = user.getAge();

if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {

return new ModelAndView("loginError");

}

return new ModelAndView("loginSuccess");

}

@Resource(name = "loginService") // 获取applicationContext.xml中bean的id为l oginService的,并注入

private LoginService loginService; //等价于spring传统注入方式写get和set方法,这样的好处是简洁工整,省去了不必要得代码

@RequestMapping("/test/login4.do")

public String testLogin4(User user) {

if (loginService.login(user) == false) {

return "loginError";

}

return "loginSuccess";

}

}

以上4个方法示例,是一个Controller里含有不同的请求url,也可以采用一个url访问,通过url参数来区分访问不同的方法,代码如下:

package controller;

import org.springframework.stereotype.Controller;import org.springframework.web. bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.R equestMethod;

@Controller

@RequestMapping("/test2/login.do") // 指定唯一一个*.do请求关联到该Controller publi c class TestController2 {

@RequestMapping

public String testLogin(String username, String password, int age) { // 如果不加任何参数,则在请求/test2/login.do时,便默认执行该方法

if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError";

}

return "loginSuccess";

}

@RequestMapping(params = "method=1", method=RequestMethod.POST) public String testLogin2(String username, String password) {

// 依据params的参数method的值来区分不同的调用方法

// 可以指定页面请求方式的类型,默认为get请求

if (!"admin".equals(username) || !"admin".equals(password)) {

return "loginError";

}

return "loginSuccess";

}

@RequestMapping(params = "method=2")

public String testLogin3(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError";

}

return "loginSuccess";

}

}

其实RequestMapping在Class上,可看做是父Request请求url,而RequestMappi ng在方法上的可看做是子Request请求url,父子请求url最终会拼起来与页面请求url进行匹配,因此RequestMapping也可以这么写:

package controller;

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

@Controller

@RequestMapping("/test3/*") // 父request请求url public class TestController3 {

@RequestMapping("login.do") // 子request请求url,拼接后等价于/test3/login.do

public String testLogin(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return "loginError";

}

return "loginSuccess";

}

}

在SpringMVC中常用的注解还有@PathVariable,@RequestParam,@PathVariable 标记在方法的参数上,利用它标记的参数可以利用请求路径传值,看下面一个例子

@RequestMapping(value="/comment/{blogId}", method=RequestMethod.POST)public voi d comment(Comment comment,@PathVariable int blogId, HttpSession session, HttpSer vletResponse response) throws IOException {

}

在该例子中,blogId是被@PathVariable标记为请求路径变量的,如果请求的是/blog/co mment/1.do的时候就表示blogId的值为1. 同样@RequestParam也是用来给参数传值的,但是它是从头request的参数里面取值,相当于request.getParameter("参数名")方法。

在Controller的方法中,如果需要WEB元素HttpServletRequest,HttpServletRespon se和HttpSession,只需要在给方法一个对应的参数,那么在访问的时候SpringMVC就会自动给其传值,但是需要注意的是在传入Session的时候如果是第一次访问系统的时候就调用session会报错,因为这个时候session还没有生成。

黑马程序员springmvc教程第一天:controller方法的返回值和参数详解

controller方法的返回值 ?返回ModelAndView 需要方法结束时,定义ModelAndView,将model和view分别进行设置。 ?返回string 如果controller方法返回string, 1、表示返回逻辑视图名。 真正视图(jsp路径)=前缀+逻辑视图名+后缀 2、redirect重定向 商品修改提交后,重定向到商品查询列表。 redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享) 3、forward页面转发 通过forward进行页面转发,浏览器地址栏url不变,request可以共享。 ?返回void 在controller方法形参上可以定义request和response,使用request或response指定响应结果: 1、使用request转向页面,如下: request.getRequestDispatcher("页面路径").forward(request, response); 2、也可以通过response页面重定向:

response.sendRedirect("url") 3、也可以通过response指定响应结果,例如响应json数据如下: response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("json串"); 参数绑定 spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。 springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller 类定义成员变更接收!!!!

学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。 Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等); √提供强大的约定大于配置的契约式编程支持; √能简单的进行Web层的单元测试; √支持灵活的URL到页面控制器的映射; √非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); √非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; √提供一套强大的JSP标签库,简化JSP开发; √支持灵活的本地化、主题等解析; √更加简单的异常处理; √对静态资源的支持; √支持Restful风格。 2.3、Spring Web MVC架构

最全最经典spring_mvc教程

spring mvc学习教程(一)-入门实例 引言 1.MVC:Model-View-Control 框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。 2.简要概述springmvc Spring C 层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。 一、入门实例 1. 搭建环境 在spring的官方API文档中,给出所有包的作用概述,现列举常用的包及相关作用: org.springframework.aop-3.0.5.RELEASE.jar:与Aop编程相关的包 org.springframework.beans-3.0.5.RELEASE.jar:提供了简捷操作bean的接口org.springframework.context-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。 org.springframework.core-3.0.5.RELEASE.jar:spring核心包 org.springframework.web-3.0.5.RELEASE.jar:web核心包,提供了web层接口org.springframework.web.servlet-3.0.5.RELEASE.jar:web 层的一个具体实包,DispatcherServlet也位于此包中。 后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。 2.编写HelloWorld实例 步骤一、建立名为springMVC_01_helloword,并导入上面列出的jar 包。 步骤二、编写web.xml配置文件,代码如下: spring

黑马程序员springmvc教程第二天:包装类型pojo参数绑定和集合类型绑定

包装类型pojo参数绑定 需求 商品查询controller方法中实现商品查询条件传入。 实现方法 第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。 第二种方法:在形参中让包装类型的pojo接收查询条件参数。 分析: 页面传参数的特点:复杂,多样性。条件包括:用户账号、商品编号、订单信息。。。 如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。 建议使用包装类型的pojo,pojo中属性是pojo。 页面参数和controller方法形参定义 页面参数: 商品名称: 注意:itemsCustom和包装pojo中的属性一致即可。 controller方法形参: public ModelAndView queryItems(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception

集合类型绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品,批量删除。 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。 controller方法定义: 页面定义:

list绑定 需求 通常在需要批量提交数据时,将提交的数据绑定到list中,比如:成绩录入(录入多门课成绩,批量提交), 本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。 表现层实现 controller方法定义: 1、进入批量商品修改页面(页面样式参考商品列表实现) 2、批量修改商品提交 使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list属性 页面定义:

Java Web高级教程SpringMVC的运用(提纲)

MBP上海第一事业部 Java Web高级教程 SpringMVC的运用 开发教育 邵华 2011/2/8 Version 0(教案) 本文是用来在MBP内部进行JAVA开发的培训教程。本文档属于社内密,请勿将本文档带离公司,请勿散播本文档。

目录 一、MVC框架的运用 (3) 二、Controller层 (3) 三、View层 (3) 四、Model层(form) (4) 五、REST应用、从url中接收数据 (4) 六、JSR-303 (4) 七、spring bean (4) 八、JPA (5)

一、MVC框架的运用 ?什么是MVC,为什么要用MVC ?spring MVC简介 \\172.16.64.101\share\referance\spring\spring-framework-reference.pdf ?开发环境配置 \\172.16.64.101\share\project_trans\develop.7z解压缩到c:\develop\ 切换workspace到C:\develop\project_sample\workspace ?Controller层:掌握Controller、RequestMapping的用法、会利用ModelMap来传递数据到View上 ?Service层:掌握Service、Autowired用法,学会从类抽出接口的办法,掌握Service注入的方法 ?View层:学会使用${}从ModelMap中读出数据,掌握标签用法 ?JPA层:学会利用ibatis保存sql信息,学会使用JpaNativeSqlRunner运行SQL。 如出现以下情况则判定为不及格: ?Controller中new了Service ?Service中new了JpaNativeSqlRunner或者EntityManager ?代码编译不通过 ?程序不能达到既定目标,表没有按照要求建立、缺少显示的字段、没有使用表格显示数据,一次运行就出错。 二、Controller层 ?掌握url的定义方法 ?用@Controller定义控制器 ?用@RequestMapping定义处理的url和请求的方法(method) ?用@RequestParam接受request参数(value) ?用ModelMap把数据传递到view上 ?用处理函数返回的字符串作为view的标识符 三、View层 ?用来输出数据,好处是防止html代码注入

黑马程序员springmvc教程第一天:程序小结

源码分析(了解) 通过前端控制器源码分析springmvc的执行过程。 第一步:前端控制器接收请求 调用doDiapatch 第二步:前端控制器调用处理器映射器查找 Handler 第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView 第四步:视图渲染,将model数据填充到request域。 视图解析,得到view: 调用view的渲染方法,将model数据填充到request域

渲染方法: 入门程序小结 通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。 前端控制器配置: 第一种:*.action,访问以.action结尾由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析 使用此种方式可以实现 RESTful风格的url 处理器映射器: 非注解处理器映射器(了解) 注解的处理器映射器(掌握) 对标记@Controller类中标识有@RequestMapping的方法进行映射。在 @RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。 处理器适配器: 非注解处理器适配器(了解) 注解的处理器适配器(掌握) 注解处理器适配器和注解的处理器映射器是配对使用。理解为不能使用非注解映

射器进行映射。 可以代替下边的配置: 实际开发使用:mvc:annotation-driven 视图解析器配置前缀和后缀: 程序中不用指定前缀和后缀: 出师表 两汉:诸葛亮 先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

Spring+SpringMVC+MyBatis的整合

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) 最近在学习Spring+SpringMVC+MyBatis的整合。以下是参考网上的资料自己实践操作的详细步骤。 1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由 apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis 是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和 Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口 和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

《JavaEE企业级应用开发教程(Spring+SpringMVC+MyBatis)》_课后习题

第一章 【思考题】 1、请简述Spring框架的优点。 2、请简述什么是Spring的IoC和DI。。 【答案】 1、Spring框架的优点如下: (1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。 (2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。 (3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。 (4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。 (5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。 (6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。 (7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API(如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。。 2、IoC的全称是Inversion of Control,中文名称为控制反转。控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。 DI的全称是Dependency Injection,中文称之为依赖注入。它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。从Spring容器的角度来看,Spring 容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。

Spring视频教程 Spring MVC开发实例-基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站

Spring视频教程Spring MVC开发实例 —基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站 课程讲师:伍老师 课程分类:Java 适合人群:中级 课时数量:80课时 用到技术:SpringMCV、MyBatis、FreeMarker 涉及项目:CMS大型门户网站 更新程度:完毕 Spring视频教程原文地址:https://www.doczj.com/doc/a213866406.html,/goods-296.html 一、课程来源: 华智经纬CMS是一套基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持mysql、oracle、sqlserver等数据库。强大、灵活的标签,用户自定义显示内容和显示方式完全生成全站静态页面,可自定义路径结构,全面提高页面访问速度基于目前流行的SpringMVC 及性能较Hibernate高的MyBatis 二、课程适合的对象: Spring视频教程适合想要提升开发技能的Java开发人员,想要使用MyBatis+springMVC+Freemarker 三、课程培养目标: 1 熟练掌握并精通springMVC+MyBatis技术。 2 加强开发的内功修炼。 3 深入理解大型门户网站开发技术 4 提供软件设计能力和软件开发能力,并在一定程度上增加项目管理经验。 6 掌握多个技术点,能够独立开发基于MyBatis+springMVC的大型门户网站 四、培训定位: Spring视频教程适合于各个层次的Java开发人员,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握技术的发展脉络。对于中高级程序员来说,本Spring视频教程可以在短时间内快速提升个人的开发能力,后期的架构和性能的课程,更是能够提升程序员的内功修炼,从而具有向架构师发展的能力。

SpringMVC教程

目录 项目目录结构图: (2) 第一步:准备 (2) Sprng中的jar包 (2) Hibernate中的jar包 (3) 其它jar包 (4) 第二步:配置文件 (5) 从hibernate中复制并修改文件 (5) 修改hibernate.properties文件 (6) 修改log4j.properties文件 (6) 编写spring配置文件 (7) 新建applicationContext.xml文件 (7) 新建spring-servlet.xml文件 (9) 修改web.xml文件 (9) 第三步:业务逻辑 (10) Model层 (10) Dao层 (11) Service层 (12) Controller层(Action层) (13) View层 (14) 第四步:测试 (15) 开启服务器 (15) 在浏览器中浏览 (16) 运行结果: (16)

项目目录结构图: 项目结构图 第一步:准备 Sprng中的jar包 首先从spring官网https://www.doczj.com/doc/a213866406.html,/download/community中下载最新版本的spring版本,本例采用的是spring-framework-3.1.1.RELEASE。初学者最好采用和此版本一样的版本。下载后如图:

解压得到文件夹: 打开文件夹: 选择如下jar包: 将以上jar包复制到你的/web-INF下的/lib中(以下简称lib)。 Hibernate中的jar包 准备hibernate的jar包,从hibernate官网https://www.doczj.com/doc/a213866406.html,/downloads下载hibernate 版本,本例采用的是hibernate-distribution-3.6.10.Final,下载后如下: 解压后: 打开hibernate文件夹,先选择如图中的jar包: 再打开hibernate文件夹中的lib文件夹:

SpringMVC介绍

为什么要使用springMVC? 很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合。通常,更新业务 对象的命令都是从视图本身发起的,使视图对任何业务对象更改都有高度敏感性。而且,当多个视图依赖 于同一个业务对象时是没有灵活性的。 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型, 框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 MVC设计模型 MVC 是一种著名的设计模式,特别是在Web 应用程序领域。模式全都是关于将包含业务数据的模块与显示模块的视图解耦的。这是怎样发生的?视图(例如,JSP 页面)怎样能够与其模型(例如,包含数据的JavaBean)解耦?记得这句格言么?一个层次的重定向几乎可以解决计算机业中的所有问题。确实,在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器。控制器将接收请求,执行更新模型 的操作,然后通知视图关于模型更改的消息。依赖于模型的状态并且依赖于请求的控制器可以决定要显示 哪个视图。 springMVC的强大之处 1.Spring MVC 实现了即用的MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。并且当向MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供 了通过简单的配置更改即可动态更改组件的灵活性。Spring MVC 为您提供了完全控制应用程序的各个 方面的力量。 2.Spring 的Web MVC 模块是围绕DispatcherServlet而设计的。DispatcherServlet给处理程序 分派请求,执行视图解析,并且处理语言环境和主题解析,此外还为上传文件提供支持。 3.DispatcherServlet通过使用处理程序映射来决定哪一个处理程序应当处理传入的请求。处理程序映 射只是用于标识使用哪一个处理程序来处理特定URL 模式的映射。处理程序是只有一种方 法ModelAndView handleRequest(request,response)的控制器接口的实现。Spring 还有一些可用 的高级处理程序实现;其中一个重要的高级处理程序实现是SimpleFormController,它提供了将命令 对象绑定到表单、对其执行验证等功能。 4.您已经在本系列教程的先前教程中使用了DispatcherServlet和简单的处理程序。在下一个部分中, 将使用SimpleFormController并说明Spring MVC 提供的各种即用功能。 springMVC优势 1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、 处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(Validator)、命令对象(Command请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。 2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要; 3、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象; 4、和Spring 其他框架无缝集成,是其它Web框架所不具备的; 5、可适配,通过HandlerAdapter可以支持任意的类作为处理器; 6、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制; 7、功能强大的数据验证、格式化、绑定机制;

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis) 使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。实践出真知。(可通过图片水印查看博客地址)1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的 Java 开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis

黑马程序员springmvc教程第二天:复习第一天

springmvc第二天高级知识 复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler。(可以通过xml配置方式,注解方式) HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler 时需要按照HandlerAdapter的要求去编写。 Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。 Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始 servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出) View resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示) View视图:jsp页面,仅是数据展示,没有业务逻辑。 注解开发: 使用注解方式的处理器映射器和适配器: 在实际开发,使用代替上边处理器映射器和适配器配置。 @controller注解必须要加,作用标识类是一个Handler处理器。 @requestMapping注解必须要加,作用: 1、对url和Handler的方法进行映射。 2、可以窄化请求映射,设置Handler的根路径,url就是根路径+子路径请求方式 3、可以限制http请求的方法 映射成功后,springmvc框架生成一个Handler对象,对象中只包括一个映射成功的method。 注解开发中参数绑定: 将request请求过来的key/value的数据(理解一个串),通过转换(参数绑定

java基础教程pdf

java基础教程pdf Java的学习,如何从入门到精通,我有六条建议,只要牢牢掌握了这六条,你想不成为大神都难。 第一你需要一个领路人; 第二你需要看书; 第三你需要写代码; 第四你需要写代码; 第五你需要写代码; 第六重要的事情说三遍。 其实想要学好Java并不是很难,我来试着梳理一下一个Java应该系统掌握的东西。 1、入门基础 JAVA语言基础、循环、数组; 了解类和对象; OOP封装、继承、多态; java.util.*包下的常用类讲解; JDK语言包的常用函数; 数据库基础及JDBC; IO流操作,多线程及Socket。 前端基础

HTML基本标签; CSS样式表;JAVASCRIPT; Ajax; jQuery; 状态管理Session和Cookie;动态网页技术; JSP数据交互; JSTL和EL表达式;Servlet、Filter、Listener;分页和文件上传。 主流技术应用 Spring应用 Hibernate应用 Struts2应用 Redis应用 4丶模拟实际项目开发SpringMVC的应用 Redis+Mysql的查询优化设计Nginx的使用 Mysql集群方案

通过第一阶段的学习掌握Java语法和常用类,数据库入门技术相关知识。让自己对于存储,IO,这些有个大概的了解。这时候,千万不要深入了解多线程和socket,谨记谨记。 通过第二阶段了解前端相关的技术,如果你喜欢前端各种酷炫的效果,那么就深入学习JS、CSS。不大感兴趣的话,就浅尝辄止,并重点学习Servlet、Filter、Listener。重点学习,重点学习,重点学习。重要的话说三遍! 通过第三阶段了解目前Java领域使用率很高的三大框架,了解他们的大概功能,并加以使用。通过使用SSH开发一个简易CRM之类的项目来加强了解,理清楚框架的大致原理。并了解Redis相关的指令及数据结构,应用到CRM里。 通过第四个阶段了解更简单易用的SpringMVC,应用和存储集群相关的概念及实现方案。让自己具备一个设计高可用,可扩展的项目框架视野。这样对于后面继续专研SpringCloud / Dubbo、zookeeper这些RPC相关的框架有很大的好处。 最后,你想自学的话,我提到的这些东西都能搜到对应的资料,无非多踩点坑罢了。但是,看文档or项目永远进步不了。一定要上手敲,想再多也不如动手。 个人还是建议培训班,有不少培训班请到的大神确实很厉害,会给你带来质

springMVC框架(简单登录实例)

本次工程结构图 Spring 1 视图层.jsp login.jsp

<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/"; %> My JSP 'index.jsp' starting page

用户名:
密码:
error.jsp

相关主题
文本预览
相关文档 最新文档