转----SpringMVC基本配置学习

本文详细介绍了如何在web.xml中配置SpringMVC的DispatcherServlet,以及如何使用SpringMVC的核心组件如Controller、HandlerMapping、ViewResolver等进行请求处理、视图解析和页面显示。
来自小强的blog

引入SpringMVC呢,首先就要在web.xml中配置中配置控制请求转发的servlet——DispatcherServlet,
<servlet>     

  <servlet-name>Springmvc</servlet-name>    

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

</servlet>    

<servlet-mapping>    

  <servlet-name>Springmvc</servlet-name>    

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

</servlet-mapping> 


这样呢,默认会到classpath下寻找名叫Springmvc- servlet.xml的配置文件,并对所有以.do为结尾的请求都可以进行处理,但是咱们也可以按自己的方式配置的~~就像这样:

<servlet>     

  <servlet-name>Springmvc</servlet-name>    

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

  <!-- 初始化参数 -->    

  <init-param>    

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

   <param-value>/WEB-INF/applicationContext.xml</param-value>     

  </init-param>    

</servlet> 


配置完了这个servlet,Spring就能给你转发请求的,也能识别配置文件,但是还要初始化容器才行啊,呵呵,这就要添加一个监听器了~~
<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

这样基本的配置就完成了,呵呵,还会用到的log4j的配置,那些咱先不说,呵呵~~~

那现在呢,Spring转发请求的servlet配置好了,把请求转发到哪里啊,Spring怎么知道根据什么规则来解析url呢,哈哈,现在就需要配置 SpringMVC的核心啦~~

刚才也说了,如果引入 DispatcherServlet的时候没有设定xml的路径,会默认加载ServletName-Servlet.xml。


个人比较倾向于自己配置啦,呵呵~~好吧,现在来看applicationContext.xml中该怎么配置SpringMVC~~

在 Spring容器中配置容器没有先后之分,那咱就按Spring参考手册里的顺序来说~~

先来说控制器,就是MVC中的C,在Spring 中就是Controller,在Spring参考手册中是这么说的:"控制器使得用户可以访问应用所提供的服务。控制器解析用户输入,并将其转换成合理的模型数据,从而可以进一步由视图展示给用户。"

Spring控制器的基础呢,是 org.springframework.mvc.Controller接口,这个接口中定义了一个handRequest方法,这个方法负责处理请求,并返回合适的模型和视图(ModelAndView)。

在开发中,咱们可以继承AbstractController,实现它的 handleRequest方法,来实现属于咱们自己的控制器,呵呵,但是Spring已经有了一些实现,比如 MultiActionController,那功能是很强的啦,咱们现在先不说,呵呵。那现在通过一个Controller,能够处理请求并返回视图了,一般来讲,咱们的Request请求里面会有参数,比如在提交注册的Request中有username、password等参数,咱们在解析的时候可以通过request.getParameter("username")来获取username,通过 request.getParameter("password") 来获取password,然后通过setter方法赋值给你刚new好的User对象,啊,这好古老啊,额,Struts的ActionForm不就能把参数封装到一个对象上去吗?哈哈,Spring也有实现噢~~~这就用到Command Controller啦,一般大家都翻译为命令控制器,我一直觉得不是很恰当,这里就不翻译啦,呵呵~~

Spring实现的Command Controller呢,像是AbstractFormController, AbstractcommandController, SimpleFormController and AbstractWizardFormController都实现了一些基本的功能,一般呢,咱们用SimpleFormController就行了,呵呵,当然了,也能够继承AbstractFormController来实现自己的CommandController,呵呵~~咱们拿 SimpleFormController来说,它有一些属性,commandName,默认是command,commandClass需要咱们自己根据实际写,value呢是要绑定的类的完整名,如果需要对参数进行校验的话,还会用到validator属性,还有默认设为TRUE的 validateOnBing属性,呵呵

那好了,有了控制器咱们可以处理数据,也有逻辑视图了,但是来了请求Spring怎么知道要调用哪个Controller啊,哈,那就要处理器映射了,呵呵,英文名叫handler mapping,在Spring参考手册中是这么写的,“HandlerMapping的基本功能是将请求传递到HandlerExecutionChain上。 首先,这个HandlerExecutionChain必须包含一个能处理该请求的处理器。 其次,这个链也可以包含一系列可以拦截请求的拦截器。 当收到请求时,DispatcherServlet将请求交给处理器映射,让它检查请求并找到一个适当的HandlerExecutionChain。 然后,DispatcherServlet执行定义在链中的处理器和拦截器(interceptor)。”咱们平常用的两个处理器映射是BeanNameUrlHandlerMapping(默认)和 SimpleUrlHandlerMapping。

这个BeanNameUrlHandlerMapping把接收到的http请求映射到bean的名字,比如有个 http://localhost:8080/springmvc/login.do的请求,他就会映射到一个叫login.do的bean上去,呵呵,很强大吧~~

而SimpleUrlHandlerMapping呢,则是可配置的,呵呵~~像是

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

<property name="mappings">

<value>

/*/account.form=editAccountFormController

/*/editaccount.form=editAccountFormController

</value>

</property>

</bean>

<bean id="editAccountFormController"

class="org.springframework.web.servlet.mvc.SimpleFormController">

…一些属性配置…

</bean>

这样呢,通过在SimpleUrlHandlerMapping中定义各个映射,就可以讲请求映射到Controller啦~~也很强大吧,哈哈,看看那个*号,它支持ant风格的映射噢~~

现在呢,咱们已经知道,当有请求时,DispatcherServlet将请求交给处理器映射来进行一些处理和拦截,完事儿之后呢根据名字或是配置调用Controller来处理请求的数据,并返回一个逻辑视图,对吧,那好,现在问题又来了,该怎么把这个逻辑视图转换到物理视图呢?哈哈,那就要视图解析器ViewResolver啦~~Spring呢,对ViewResolver的实现有很多,对XMl、Excel、PDF、JSP、Velocity、FreeMaker都有支持,现在呢,咱们就先以最普通的

Jsp为例说一下~~配置呢,就系这样子滴:

<bean id="viewResolver"

class="org.springframework.web.servlet.view.UrlBasedViewResolver">

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

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

</bean>

这样呢,如果Controller返回了一个叫做“sample”的ModelAndView,那就能定位到/WEB-INF/jsp/sample.jsp了,很强大吧,呵呵~~

那如果咱们的项目中既有Velocity,又有jsp,这样混合不同的视图时应该怎么办呢?哈哈,咱们可以使用ResourceBundleViewResolver,但是这个呢,貌似配置很麻烦的说,不推荐哈,咱们还可以配置多个视图解析器,这样呢Spring就会挨个进行解析,直到找到合适的视图为止,注意噢,要是没有对应的视图会怎么样呢?InternalResourceViewResolver会返回一个null值,但是别的解析器却不一定呢,所以在使用别的解析器的时候要好好研究下文档了哈~~还有啊,最好把InternalResourceViewResolver放在解析器链配置的最后,因为他就算是找不到视图也会返回null值,那么以后的解析器还会起作用吗?哈哈~~~

哈哈,现在呢也找到页面了,没问题的话,就应该能正常工作了啊,但是还有一点东西要说,那就是页面之间的重定向,那怎么实现呢?哈,咱们有RedirectView呢!!!如果要执行redirect操作,直接在Controller里return “redirect:ViewName”, UrlBasedViewResolver (以及它的子类) 会知道系统要生成一个HTTP redirect,ViewName就是要重定向的URL,同样,执行forward的话,就用“forward:ViewName”就行啦~~

这样呢,一个基本的SpringMVC配置就完成了,哈,只要理解了这个流程,代码还是很简单的啦~~剩下呢,还有本地化解析器、主题、文件上传、Spring标签等一些内容,呵呵~~~其实那些东东都简单的啦~~

嗯,先写到这里,我再研究研究去了~~~

Spring很强大啊~~
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值