对springMVC框架项目的学习与解析

看到一句话自勉:程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。

今天我要整理的是现在项目用的框架SpringMVC,之前提到了他的优势,减少了配置文件的书写,下面就说下自己搭建框架的过程(推荐大家学习下Spring in action):

先来看一张流程图:

首先web.xml下配置DispatcherServlet(之前的建项目,导包不在说):

<!--
配制spring分发器servlet -->

<servlet>

<servlet-name>action</servlet-name>

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

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

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

</servlet-mapping>

创建控制器HomeController:

public class HomeController extendsAbstractController {

protectedModelAndViewhandleRequestInternal(HttpServletRequest
arg0,

HttpServletResponse arg1) throws Exception {

System.out.println("hello world");

returnnew ModelAndView("index");

}

}

配置WEB-INF下的action-servlet.xml文件:

<!-- 控制器-->

<bean name="/home.action"class="cn.itcast.springmvc.controller.HomeController">

</bean>

<!-- 内部资源视图解析器-->

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

<!-- 前缀-->

<property name="prefix"value="/WEB-INF/jsps/"/>

<!-- 后缀-->

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

</bean>

提到处理器映射,我们说下一般有哪些:(bean名url处理器映射,简单url处理器映射,控制器类名处理器映射)

<!--bean名url处理器映射-->

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

<property name="order"value="1" />

</bean>

<!--
简单url处理器映射-->

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

<propertyname="mappings">

<props>

<prop key="/bbb.action">helloController</prop>

</props>

</property>

<propertyname="order" value="2" />

</bean>

<!--
控制器类名处理器映射 -->

<beanid="controllerClassNameHandlerMapping"class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">

<property name="order"value="3" />

</bean>

还有就是控制器Controller的几种:

? CommandController(命令控制器)

* 需要继承AbstractCommandController类,并重写handle方法

* 通过构造方法注册命令类和命令名称,如:

  publicMyCommandController(){

//注册命令类

  this.setCommandClass(Person.class);

//命令名称

  this.setCommandName("person");

}

? FormController(表单控制器)

* 需要继承SimpleFormController类,并重写doSubmitAction方法

* 通过构造方法注册命令类和命令名称,如:

  publicMyFormController(){

  this.setCommandClass(Person.class);

  this.setCommandName("person");

}

* 在spring配置文件中对表单控制器进行配置,如:

<!--表单控制器
-->

<beanid="myFormController" name="/form.action"   class="cn.itcast.controller.MyFormController">

<propertyname="successView" value="success"/>

<propertyname="formView" value="personForm"/>

</bean>

? WizardFormController(向导表单控制器)

* 需要继承AbstractWizardFormController类,并重写processFinish方法

*通过构造方法注册命令类和命令名称,如:

publicMyWizardFormController(){

  this.setCommandClass(Person.class);

  this.setCommandName("person");

}

* 在spring配置文件中对向导表单控制器进行配置,如:

<!-- 向导表单控制器
-->

<bean name="/wizard.action" id="myWizardFormControlle" class="cn.itcast.controller.MyWizardFormController">

<propertyname="pages">

<list>

<value>wizard/1</value>

<value>wizard/2</value>

<value>wizard/3</value>

</list>

</property>

</bean>

剩下就是spring的配置,这么我们采用注解方式,将dao,service,controller层分别注解:

dao:@Repository service:@Service  controller:@Controller

我们说不按照struts.xml方法配置方法跳转,那如何实现页面和方法的跳转那,springMVC则采用方法体上通过注解将前台方法体和后台执行绑定:

@requestMap(value="")在value中填写方法路径和方法名,其中还可以设置方法接受的方法methed,就是表单的get,post方法,同时我们还把所有视图的跳转都交给控制器,就是原本前台可以直接跳转的,我们也要过一次后台处理,一是通过后台加载数据,二是方便实现权限控制,将用户的所有操作都控制在服务器端,这个是权限粗粒度控制的优势。跳转有了,怎么加载跳转后的视图,就是肯定有新的url产生,这里就有新的类,ModelAndView这个类就是存放跳转后的url,以及要加载的数据。实战后,我想说,大家一定要注意ModelAndView类引包问题,我们使用的是Spring.servlet包,具体的我没记不清楚,但确实我多次错入这个误区,而且这个bug很难找,所以希望后来者小心,细心,多心。

还有一点我觉得需要记下,就是我们以前采用struts+hibernate+spring框架时,通常会对前台页面做伪静态化处理,这样做的好处在提高网站速度,方便搜索引擎优化调用,再个就是网站稳定性得到提升。之前ssh框架就用了urlrewrite框架做伪静态化处理,现在我们其实就不用这个技术来做,springMVC运行后,除第一次编译需要花费时间,剩下就会生成静态化。还有我们网站经常喜欢隐藏自己所用的技术,我们也经常看到网站大部分页面都是html结尾,这个我们就可以用框架来做,将类似action动作用html来代替,就是我们每个action都是以html结尾。

最后,每一个框架的重用都是对项目完善的分析,以及开源背后的强大,对于开发者,熟悉框架的最好方法就是边用边学习,不停的coding,从调试中就会学到框架带出来的快乐和忧愁,好,今天就这样。

时间: 2024-08-27 05:35:30

对springMVC框架项目的学习与解析的相关文章

rapid-framework脚手架快速搭建springMVC框架项目

rapid-framework介绍:   一个类似ruby on rails的java web快速开发脚手架,本着不重复发明轮子的原则,框架只是将零散的struts(struts2)+spring+hibernate各个组件组装好在一起,并对struts及struts2进行改造,提供零配置编程,并内置一个强大的代码生成器及模板文件,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面.  整个项目

springMVC框架下JQuery传递并解析Json数据

json作为一种轻量级的数据交换格式,在前后台数据交换中占领着很重要的地位.Json的语法很简单,採用的是键值对表示形式.JSON 能够将 JavaScript 对象中表示的一组数据转换为字符串,然后就能够在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给server端程序,也能够从server端程序传递json格式的字符串给前端并由前端解释.这个字符串是符合json语法的,而json语法又是javascript语法的子集,所以javascript很easy解释

基于SpringMVC框架项目Demo

Git地址:https://github.com/JavaWeb1024/SpringMVC 1.     框架简介: 为打造一套集群高可用的框架,集成的技术目前比较成熟,稳定.相关的知识点在网络上也可以很容易找到相关的知识,有问题就可以立即给予解决.框架没有集成前端,如果有需要,可以集成JSP或者前端框架(Freemarker or Velocity等),易于扩展.本系统主要针对的是后台程序,提供的Demo均已经运行成功,便于学习. 使用的技术包括 l   SpringMVC l   Myba

SpringMVC框架学习笔记(1)——HelloWorld

搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-core-4.1.6.RELEASE.jar spring-expression-4.1.6.RELEASE.jar spring-tx-4.1.6.RELEASE.jar spring

项目搭建系列之二:SpringMVC框架下配置MyBatis

1.什么是MyBatis? MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 回到目录 2.环境准备 搭建好SpringMVC框架,可以阅读<项目搭建系列之一:使用Maven搭建SpringMVC项目>,也可以直

SpringMVC框架图解析

Spring框架提供了构造Web应用程序的全能MVC模块.Spring MVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行制定.是一个标准的MVC框架. 那你猜一猜哪一部分应该是哪一部分? SpringMVC框架图 SpringMVC接口解释 DispatcherServlet接口: Spring提供的前端控制器,所有的请求都有经过它来统一分发.在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的H

jackson-----json解析器springMVC框架内置

jackson-----json解析器springMVC框架内置常见:jsonlib.gson.fastjson.jackson一.JSON和为Java对象的相互转换(1)Java转为Json 1.创建jackson核心对象 objectMapper 2.调用方法 1.readValue(参数,clazz):(2)Json转为Java 1.创建jackson核心对象 objectMapper 2.调用方法 1. writeValue(参数,obj); 参数:file:将obj对象转换成JSOn字

第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第五天】

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第四天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 开发环境: Eclipse IDE for Enterprise Java DevelopersOS: Wi

springmvc框架的项目,如何在controller中使用dao访问数据库

在springmvc框架中,controller和其他的bean是被分别扫描的,原因是如果不这样配置,controller就会被扫描两次,从而导致事物等问题. 通常情况下,controller是不允许直接使用dao的,一个合理的设计就是在sevice中去调用dao. 但是如果有临时的需求需要在controller中访问数据库,那怎么办呢? 有两种方法. 方法1:在web.xml中配置,使spring对事物的控制设计请求的整个生命周期. <!--配置Spring的OpenSessionInView