当前位置:文档之家› 学习SpringMVC系列教程(三)Controller接口控制器详解(2)

学习SpringMVC系列教程(三)Controller接口控制器详解(2)

学习SpringMVC系列教程(三)Controller接口控制器详解(2)
学习SpringMVC系列教程(三)Controller接口控制器详解(2)

学习SpringMVC系列教程(三)Controller接口控制器详解

(2)

4.5、ServletForwardingController

将接收到的请求转发到一个命名的servlet,具体示例如下:Java Code复制内容到剪贴板

package cn.javass.chapter4.web.servlet;

public class ForwardingServlet extends HttpServlet { @Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.getWriter().write("Controller forward to Servlet");

}

}

XML/HTML Code复制内容到剪贴板

<servlet>

<servlet-name>forwarding</servlet-name>

<servlet-class>cn.javass.chapter4.web.servlet.Forwar dingServlet</servlet-class>

</servlet>

XML/HTML Code复制内容到剪贴板

<!—在chapter4-servlet.xml配置处理器-->

<bean name="/forwardToServlet"

class="org.springframework.web.servlet.mvc.ServletForwa rdingController">

<property name="servletName"

value="forwarding"></property>

</bean>

当我们请求/forwardToServlet时,会被转发到名字为“forwarding”的servlet处理,该sevlet的servlet-mapping

标签配置是可选的。

4.6、BaseCommandController

命令控制器通用基类,提供了以下功能支持:

1、数据绑定:请求参数绑定到一个command object(命令对象,非GoF里的命令设计模式),这里的命令对象是指绑定请求参数的任何POJO对象;

commandClass:表示命令对象实现类,如UserModel;commandName:表示放入请求的命令对象名字(默认command),request.setAttribute(commandName, commandObject);

2、验证功能:提供Validator注册功能,注册的验证器会验证命令对象属性数据是否合法;

validators:通过该属性注入验证器,验证器用来验证命令对象属性是否合法;

该抽象类没有没有提供流程功能,只是提供了一些公共的功能,实际使用时需要使用它的子类。

4.7、AbstractCommandController

命令控制器之一,可以实现该控制器来创建命令控制器,该控制器能把自动封装请求参数到一个命令对象,而且提供了验证功能。

1、创建命令类(就是普通的JavaBean类/POJO)

Java Code复制内容到剪贴板

package cn.javass.chapter4.model;

public class UserModel {

private String username;

private String password;

//省略setter/getter

}

2、实现控制器

Java Code复制内容到剪贴板

package cn.javass.chapter4.web.controller;

//省略import

public class MyAbstractCommandController extends AbstractCommandController {

public MyAbstractCommandController() {

//设置命令对象实现类

setCommandClass(UserModel.class);

}

@Override

protected ModelAndView handle(HttpServletRequest req, HttpServletResponse resp, Object command, BindException errors) throws Exception {

//将命令对象转换为实际类型

UserModel user = (UserModel) command;

ModelAndView mv = new ModelAndView();

mv.setViewName("abstractCommand");

mv.addObject("user", user);

return mv;

}

}

XML/HTML Code复制内容到剪贴板

<!—在chapter4-servlet.xml配置处理器-->

<bean name="/abstractCommand"

class="cn.javass.chapter4.web.controller.MyAbstractCom mandController">

<!-- 也可以通过依赖注入注入命令实现类-->

<!-- property name="commandClass"

value="https://www.doczj.com/doc/a618181911.html,erModel"/-->

</bean>

Java Code复制内容到剪贴板

<!— WEB-INF/jsp/abstractCommand.jsp视图下的主要内容-->

${https://www.doczj.com/doc/a618181911.html,ername }-${user.password }

当我们在浏览器中输入

“http://localhost:9080/springmvc-chapter4/abstractComma nd?us ername=123&password=123”,会自动将请求参数username和password绑定到命令对象;绑定时按照JavaBean命名规范绑定;

4.8、AbstractFormController

用于支持带步骤的表单提交的命令控制器基类,使用该控制器可以完成:

1、定义表单处理(表单的渲染),并从控制器获取命令对象构建表单;

2、提交表单处理,当用户提交表单内容后,AbstractFormController可以将用户请求的数据绑定到命令对象,并可以验证表单内容、对命令对象进行处理。

Java Code复制内容到剪贴板

@Override

rotected ModelAndView

handleRequestInternal(HttpServletRequest request, HttpServletResponse response)

throws Exception {

//1、是否是表单提交?该方法实现为("POST".equals(request.getMethod())),即POST表示表单提交

if (isFormSubmission(request)) {

try {

Object command = getCommand(request);

ServletRequestDataBinder binder = bindAndValidate(request, command);

BindException errors = new

BindException(binder.getBindingResult());

//表单提交应该放到该方法实现

return processFormSubmission(request, response, command, errors);

}

catch (HttpSessionRequiredException ex) {

//省略部分代码

return handleInvalidSubmit(request, response);

}

}

else {

//2、表示是表单展示,该方法又转调showForm方法,因此我们需要覆盖showForm来完成表单展示

return showNewForm(request, response);

}

bindOnNewForm:是否在进行表单展示时绑定请求参数到

表单对象,默认false,不绑定;

sessionForm:session表单模式,如果开启(true)则会将表单对象放置到session中,从而可以跨越多次请求保证数据不丢失(多步骤表单常使用该方式,详解AbstractWizardFormController),默认false;

Object formBackingObject(HttpServletRequest request) :提供给表单展示时使用的表单对象(form object表单要展示的默认数据),默认通过commandName暴露到请求给展示表单;

Map referenceData(HttpServletRequest request, Object command, Errors errors):展示表单时需要的一些引用数据

(比如用户注册,可能需要选择工作地点,这些数据可以通过该方法提供),如:

Java Code复制内容到剪贴板

protected Map referenceData(HttpServletRequest request) throws Exception {

Map model = new HashMap();

model.put("cityList", cityList);

return model;

}

这样就可以在表单展示页面获取cityList数据。

SimpleFormController继承该类,而且提供了更简单的表单流程控制。

4.9、SimpleFormController

提供了更好的两步表单支持:

1、准备要展示的数据,并到表单展示页面;

2、提交数据数据进行处理。

第一步,展示:

第二步,提交表单:

接下来咱们写一个用户注册的例子学习一下:

(1、控制器

Java Code复制内容到剪贴板

package cn.javass.chapter4.web.controller;

//省略import

public class RegisterSimpleFormController extends SimpleFormController {

public RegisterSimpleFormController() {

setCommandClass(UserModel.class); //设置命令对象实现类

setCommandName("user");//设置命令对象的名字}

//form object 表单对象,提供展示表单时的表单数据(使用commandName放入请求)

protected Object

formBackingObject(HttpServletRequest request) throws Exception {

UserModel user = new UserModel();

user.setUsername("请输入用户名");

return user;

}

//提供展示表单时需要的一些其他数据

protected Map referenceData(HttpServletRequest request) throws Exception {

Map map = new HashMap();

map.put("cityList", Arrays.asList("山东", "北京", "上海"));

return map;

}

protected void doSubmitAction(Object command) throws Exception {

UserModel user = (UserModel) command;

//TODO 调用业务对象处理

System.out.println(user);

}

}

setCommandClass和setCommandName:分别设置了命令对象的实现类和名字;

formBackingObject和referenceData:提供了表单展示需要的视图;

doSubmitAction:用于执行表单提交动作,由onSubmit方法调用,如果不需要请求/响应对象或进行数据验证,可以直接使用doSubmitAction方法进行功能处理。

(2、spring配置(chapter4-servlet.xml)

XML/HTML Code复制内容到剪贴板

<bean name="/simpleForm"

class="cn.javass.chapter4.web.controller.RegisterSimpleF ormController">

<property name="formView" value="register"/>

<property name="successView"

value="redirect:/success"/>

</bean>

<bean name="/success"

class="cn.javass.chapter4.web.controller.SuccessControll er"/>

formView:表示展示表单时显示的页面;

successView:表示处理成功时显示的页面;

“redirect:/success”表示成功处理后重定向到/success控制器;防止表单重复提交;

“/success” bean的作用是显示成功页面,此处就不列举了。

(3、视图页面

XML/HTML Code复制内容到剪贴板

<!-- register.jsp 注册展示页面-->

<form method="post">

username:<input type="text" name="username"

value="${https://www.doczj.com/doc/a618181911.html,ername}"><br/>

password:<input type="password"

name="username"><br/>

city:<select>

<c:forEach items="${cityList }" var="city">

<option>${city}</option>

</c:forEach>

</select><br/>

<input type="submit" value="注册"/>

</form>

此处可以使用${https://www.doczj.com/doc/a618181911.html,ername}获取到formBackingObject 设置的表单对象、使用${cityList}获取referenceData设置的表单支持数据;

到此一个简单的两步表单到此结束,但这个表单有重复提交表单的问题,而且表单对象到页面的绑定是通过手工绑定的,后边我们会学习spring标签库(提供自动绑定表单对象

到页面)。

4.10、CancellableFormController

一个可取消的表单控制器,继承SimpleFormController,额外提供取消表单功能。

1、表单展示:和SimpleFormController一样;

2、表单取消:和SimpleFormController一样;

3、表单成功提交:取消功能处理方法为:onCancel(Object command),而且默认返回cancelView属性指定的逻辑视图名。

那如何判断是取消呢?如果请求中有参数名为“_cancel”的参数,则表示表单取消。也可以通过cancelParamKey来修改参数名(如“_cancel.x”等)。

示例:

(1、控制器

复制RegisterSimpleFormController一份命名为CanCancelRegisterSimpleFormController,添加取消功能处理方法实现:

Java Code复制内容到剪贴板

@Override

protected ModelAndView onCancel(Object command) throws Exception {

UserModel user = (UserModel) command;

//TODO 调用业务对象处理

System.out.println(user);

return super.onCancel(command);

}

onCancel:在该功能方法内实现取消逻辑,父类的onCancel 方法默认返回cancelView属性指定的逻辑视图名。

(2、spring配置(chapter4-servlet.xml)

XML/HTML Code复制内容到剪贴板

<bean name="/canCancelForm"

class="cn.javass.chapter4.web.controller.CanCancelRegis terSimpleFormController">

<property name="formView" value="register"/>

<property name="successView"

value="redirect:/success"/>

<property name="cancelView"

value="redirect:/cancel"/>

</bean>

<bean name="/cancel"

class="cn.javass.chapter4.web.controller.CancelController "/>

cancelParamKey:用于判断是否是取消的请求参数名,默

认是_cancel,即如果请求参数数据中含有名字_cancel则表示是取消,将调用onCancel功能处理方法;

cancelView:表示取消时时显示的页面;“redirect:/cancel”

表示成功处理后重定向到/cancel控制器;防止表单重复提交;

“/cancel” bean的作用是显示取消页面,此处就不列举了(详见代码)。

(3、视图页面(修改register.jsp)

XML/HTML Code复制内容到剪贴板

<input type="submit" name="_cancel" value="取消"/>

该提交按钮的作用是取消,因为name="_cancel",即请求后会有一个名字为_cancel的参数,因此会执行onCancel功能处理方法。

(4、测试:

在浏览器输入

“http://localhost:9080/springmvc-chapter4/canCancelForm ”,则首先到展示视图页面,点击“取消按钮”将重定向到“http://localhost:9080/springmvc-chapter4/cancel”,说明取消成功了。

实际项目可能会出现比如一些网站的完善个人资料都是多个页面(即多步),那应该怎么实现呢?接下来让我们看一下spring Web MVC提供的对多步表单的支持类

AbstractWizardFormController。

黑马程序员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/a618181911.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/a618181911.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/a618181911.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

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