spring-mvc入门
来源:互联网 发布:淘宝瑜伽服模特是谁 编辑:程序博客网 时间:2024/05/20 04:13
原始开发方式
步骤:
- 新建web project
- 创建jsp文件
- 需求
- 引入jar包
org.springframework.asm-3.1.0.RELEASE.jar
org.springframework.aop-3.1.0.RELEASE.jar
org.springframework.beans-3.1.0.RELEASE.jar
org.springframework.context-3.1.0.RELEASE.jar
org.springframework.context.support-3.1.0.RELEASE.jar
org.springframework.core-3.1.0.RELEASE.jar
org.springframework.expression-3.1.0.RELEASE.jar
org.springframework.web-3.1.0.RELEASE.jar
org.springframework.web.servlet-3.1.0.RELEASE.jarc
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.javax.servlet.jsp.jstl-1.1.2.jar
com.springsource.org.apache.taglibs.standard-1.1.2.jar
- 配置分发器 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>
注:如果配置文件放到src下需要另行配置。并且更名为spring-mvc.xml
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup> 在启动时加载
</servlet>
- 创建控制器类 HomeController
public class HomeControllerextends AbstractController {
protectedModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponsearg1) throws Exception {
System.out.println("helloworld");
//index为逻辑名
returnnew ModelAndView("index");
}
}
- 配置beans
创建spring配置文件./WEB-INF/action-servlet.xml
配置文件的名称命名规则为配置的DispatcherServlet的映射名称+“-servlet”组成。
<?xmlversion="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!--personService-->
<beanid="ps"class="cn.itcast.springmvc.controller.PersonService" />
<!--控制器 -->
<beanname="/home.action" class="cn.itcast.springmvc.controller.HomeController">
<propertyname="ps" ref="ps" />
</bean>
<!--内部资源视图解析器 -->
<beanid="internalResourceViewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀 -->
<propertyname="prefix"value="/WEB-INF/jsps/" />
<!--后缀 -->
<propertyname="suffix"value=".jsp" />
</bean>
</beans>
注:访问路径= 前缀 + 逻辑名 + 后缀 eg: /WEB-INF/jsps/index.jsp
- 发布、测试
实际开发中,我们会后多个配置文件
<!-- 通过上下文参数指定分解的上下文配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!-- 配置上下文监听器ContextLoaderListener,可以完成在初始化的时候创建spring容器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
几种常见的mapping处理器映射
BeanNameUrlHandlerMapping(默认)
把你的url作为bean的名称,来找到bean,从而执行bean的方法
<!-- Bean名url处理器映射 -->
<beanid="beanNameUrlHandlerMapping"class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<!-- 优先级 -->
<propertyname="order" value="0" />
</bean>
<!-- 控制器 -->
<bean id="homeController" name="/hi.action"class="cn.itcast.springmvc.controller.HomeController"></bean>
优先级:多个映射的时候会通过优先级来决定先后顺序,优先级值越高会先被找。
SimpleUrlHandlerMapping
<!-- 简单url处理器映射 -->
<bean id="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<propertyname="mappings"> 维护了map集合
<props>
<propkey="/home.action">homeController</prop> 指定控制器的id
</props>
</property>
<!--设置优先级 -->
<propertyname="order" value="1" />
</bean>
<!-- 简单控制器 -->
<bean id="homeController"class="cn.itcast.springmvc.controller.HomeController">
<propertyname="ps" ref="ps" />
</bean>
ControllerClassNameHandlerMapping
<!-- 控制器类名处理器映射 -->
<bean id="controllerClassNameHandlerMapping"
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="order" value="2"/>
</bean>
规则:得到类名HomeControlller处理器类后,将Controller去掉,剩下的全部小写,作为url。如多个单词 也全小写
几种常见的controller控制器
/** * 简单控制器 */public class HomeController extends AbstractController {private PersonService ps ;//注入personServicepublic void setPs(PersonService ps) {this.ps = ps;}protected ModelAndView handleRequestInternal(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception {List<Person> list= ps.findAllPersons();//ModelAndView可以传入三个参数(逻辑名,key,value)key与value相当于setAttrbut,供视图取值return new ModelAndView("index","personList",list);}}<!-- 简单控制器 --><bean id="homeController" class="cn.itcast.springmvc.controller.HomeController"><property name="ps" ref="ps" /></bean>/** *命令控制器,封装请求参数成命令对象 */public class MyCommandController extends AbstractCommandController {public MyCommandController(){//在构造函数中注册命令类this.setCommandClass(Person.class);//指定命令名称this.setCommandName("person");}protected ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object command, BindException errors)throws Exception {//将命令对象强转,将参数封装在 Command Object对象中 Person p = (Person) command ;System.out.println(p.getName());return new ModelAndView("index");}}<!-- 命令控制器 --><bean id="myCommandController" class="cn.itcast.springmvc.controller.MyCommandController"/>/** * 表单控制器 */public class MyFormController extends SimpleFormController {/** * 注册命令对象 */public MyFormController(){this.setCommandClass(Person.class);this.setCommandName("person");}protected void doSubmitAction(Object command) throws Exception {Person p = (Person) command ;System.out.println(p.toString());}}<!-- 表单控制器(处理表单提交) --><bean id="myFormController" class="cn.itcast.springmvc.controller.MyFormController"><!-- 表单视图 value为逻辑名--><property name="formView" value="personForm" /><!-- 成功视图 --><property name="successView" value="index" /></bean>详细:当方位myform.action的时候,是通过GET方式访问,这时候就会找到formView所对应的表单页面, 当用户填写完表单提交后,通过POST方式访问,这时候就会找到successView所对应的成功页面。/** * 向导表单控制器 */public class MyWizardFormController extends AbstractWizardFormController {public MyWizardFormController(){this.setCommandClass(Person.class);this.setCommandName("person");}/** * 处理完成 */protected ModelAndView processFinish(HttpServletRequest request,HttpServletResponse response, Object command, BindException errors)throws Exception {Person p = (Person) command ;System.out.println(p.toString());return new ModelAndView("index");}/** * 处理取消 */protected ModelAndView processCancel(HttpServletRequest request,HttpServletResponse response, Object command, BindException errors)throws Exception {return new ModelAndView("index");}}<!-- 向导表单控制器 --><bean id="myWizardFormController" class="cn.itcast.springmvc.controller.MyWizardFormController"><property name="pages"><list><value>wizard/1</value> wizard文件夹下的1.jsp<value>wizard/2</value><value>wizard/3</value></list></property></bean>注:第一页为0,第二页为1..... _target+页角标为跳转到哪一页,_cancel为取消,_finish为完成1.jsp<form action="mywizardform.action" method="post">id : <input type="text" name="id"><br><input type="submit" name="_target1" value="next"><input type="submit" name="_cancel" value="cancel"></form>2.jsp<form action="mywizardform.action" method="post">name : <input type="text" name="name"><br><input type="submit" name="_target0" value="back"><input type="submit" name="_target2" value="next"><input type="submit" name="_cancel" value="cancel"></form>3.jsp<form action="mywizardform.action" method="post">age : <input type="text" name="age"><br><input type="submit" name="_target1" value="back"><input type="submit" name="_cancel" value="cancel"><input type="submit" name="_finish" value="ok"></form>
- 【spring】spring MVC入门
- 【Spring】Spring MVC入门
- Spring MVC 入门
- Spring MVC入门
- Spring MVC 入门
- spring mvc入门
- spring mvc入门
- Spring MVC 入门
- 入门spring MVC
- Spring MVC 入门
- Spring MVC 入门 @ MultiActionController
- spring mvc入门
- Spring MVC入门
- Spring MVC 入门
- Spring MVC 入门
- Spring MVC 入门
- Spring mvc 入门
- Spring MVC 入门
- 重新配置与卸载 11gR2 Grid Infrastructure
- ASP.Net中控件的EnableViewState属性
- table 表格 中数据换行
- 两种方法查看MFC源代码
- wireshark工具教程
- spring-mvc入门
- C++调用JAVA方法详解
- js传值(如url中含有中文)时,后台request得到的是乱码,解决方法如下
- Hdu 1730 Northcott Game
- Windows精准计时&精准Timer
- About MVCPager 分页
- Apache组件commons的IO包常用方法实例
- hdu 3586 树形dp +二分
- inline在C++中的作用(转)