SpringMVC入门学习体验(1)基于xml的MultiActionController
来源:互联网 发布:仓库数据表格有几种 编辑:程序博客网 时间:2024/06/08 08:09
学习Spring框架有一两个礼拜了,在这之前JAVA SSH的基础几乎没有,一直从事WPF的那一套开发,之前做的网页比较小用javaBean+servlet+jsp自己都能解决,但是跨到javaWeb学习之后还是有点教训和经验,我还没到大牛的层次,在应用层面上来说,C#和JavaWeb的开发的差别还是有点大的。废话说少点,最好在学Spring之前有struts的一些常识,不然以些bean的概念理解起来有些头疼。言归正转:
SpringMVC基本上有三种模式:基于XML,基于注解,基于java类;第一种,简单的来说就是利用反射来装载配置文件,第二种,就是注解后自动加载,大大节省人力,第三种,类似第二种,更加灵活,我还不是很熟悉;不过一般开发,都是基于注解的模式。
在这里我有些话说,有编程基础的,可能直接照着例子ctrl+c和ctrl+v注解模式感觉很简单,也很容易,只要完成就行了,如果你的任务是这个,那恭喜你,你成功了!我学习的经验是,因为是按照先后顺序发展的,如果你直接学注解,可能你就是知其然不知其所以然了,所以,还是得从基础的xml配置学起,一步一步的成为大牛.
首先还是配置Spring的web.xml文件交代清楚如何启动等……
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>再接着就是配置web.xml中提到的dispatcherServlet-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"><!-- 定义映射 --><bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="helloWorld.do">helloWorldAction</prop></props></property></bean><!-- 定义视图及jsp存放路径 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"><value>org.springframework.web.servlet.view.InternalResourceView</value></property><property name="prefix"><value>/WEB-INF/pages/</value></property><property name="suffix"><value>.jsp</value></property></bean><!-- 定义控制器 --><bean id="helloWorldAction" class="com.gc.action.HelloWorldAction"><property name="methodNameResolver"> <ref bean="paraMethodResolver"/></property><property name="viewPage"><value>show</value></property></bean><!-- 定义动作参数 --><bean id="paraMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"><property name="paramName"><value>method</value></property></bean></beans>
最后就是来是来实现我们定义的控制器了。
package com.gc.action;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.ServletRequestBindingException;import org.springframework.web.bind.ServletRequestUtils;import org.apache.log4j.Logger;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;public class HelloWorldAction extends MultiActionController {private Logger logger = Logger.getLogger(this.getClass().getName());private String viewPage;public ModelAndView insert(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "insert:" + helloWorld);return new ModelAndView(getViewPage(), model);}public ModelAndView delete(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "delete:" + helloWorld);return new ModelAndView(getViewPage(), model);}public ModelAndView update(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "update:" + helloWorld);return new ModelAndView(getViewPage(), model);}public String getViewPage() {return viewPage;}public void setViewPage(String viewPage) {this.viewPage = viewPage;}}
当然,我们可能还要有用来展示的入口网页在webContent目录下(不要放到webContent/WEB-INF下,tomcat对这个目录保护,在浏览器中是不能直接访问的)input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="helloWorld.do" method="post">Welcome<input type="text" name="msg" value=""/><input type="submit" name="method" value="insert" /><input type="submit" name="method" value="update" /><input type="submit" name="method" value="delete" /></form></body></html>
最后用来显示最终结果的的页面,放在WEB-INF目录下:show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><% String str = (String)request.getAttribute("helloWorld"); %><body><form action="/8_4/helloWorld.do" name="HelloWorld" method="post">you Enter is :${helloWorld }<br></form></body></body></html>
最后的结果截图:
入口:
结果页显示:
还有一种方案,即不继承MultiActionController,在配置文件中完成。
HelloWorldAction.java修改如下:
package com.gc.action;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.ServletRequestBindingException;import org.springframework.web.bind.ServletRequestUtils;import org.apache.log4j.Logger;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;//public class HelloWorldAction extends MultiActionController {public class HelloWorldAction {private Logger logger = Logger.getLogger(this.getClass().getName());private String viewPage;public ModelAndView insert(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "insert:" + helloWorld);return new ModelAndView(getViewPage(), model);}public ModelAndView delete(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "delete:" + helloWorld);return new ModelAndView(getViewPage(), model);}public ModelAndView update(HttpServletRequest req, HttpServletResponse res)throws ServletRequestBindingException {String helloWorld = ServletRequestUtils.getRequiredStringParameter(req,"msg");Map model = new HashMap();model.put("helloWorld", "update:" + helloWorld);return new ModelAndView(getViewPage(), model);}public String getViewPage() {return viewPage;}public void setViewPage(String viewPage) {this.viewPage = viewPage;}}
在修改bean配置文件dispatcherServlet-servlet.xml:使用代理来实现
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"><!-- 定义映射 --><bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="helloWorld.do">action</prop></props></property></bean><!-- 定义视图及jsp存放路径 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"><value>org.springframework.web.servlet.view.InternalResourceView</value></property><property name="prefix"><value>/WEB-INF/pages/</value></property><property name="suffix"><value>.jsp</value></property></bean><!-- 定义控制器 --><bean id="helloWorldAction" class="com.gc.action.HelloWorldAction"><!-- <property name="methodNameResolver"> <ref bean="paraMethodResolver"/></property> --><property name="viewPage"><value>show</value></property></bean><!-- 定义动作参数 --><bean id="paraMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"><property name="paramName"><value>method</value></property></bean><!-- 使用多控制器代理类 --><bean id="action" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController"><property name="methodNameResolver"><ref bean="paraMethodResolver"/></property><property name="delegate"><ref bean="helloWorldAction"/></property></bean></beans>
0 0
- SpringMVC入门学习体验(1)基于xml的MultiActionController
- SpringMVC的控制器MultiActionController
- 基于xml的SpringMVC
- SpringMVC学习之控制器—MultiActionController
- SpringMVC中MultiActionController的两种配置
- SpringMVC MultiActionController的使用-最简化教程
- SpringMVC中MultiActionController的两种配置
- SpringMVC中MultiActionController的两种配置
- Spring入门学习初体验(2)----基于注解的AOP
- 基于注解的SpringMVC入门
- SpringMVC—MultiActionController控制器
- SpringMVC中MultiActionController
- springmvc MultiActionController配置
- Springmvc案例1----基于spring2.5的采用xml配置
- SpringMVC入门学习1
- springmvc中MultiActionController的3种方法映射
- SpringMVC源码(七)Controller控制器5-MultiActionController
- SpringMVC详解(三)------基于注解的入门实例
- Java解析XML文档方式一—DOM
- C++学习问题NO.1
- 进程的相关知识总结
- 项目管理你用啥?JIRA还是Zoho Projects?
- oozie 工作流程详解
- SpringMVC入门学习体验(1)基于xml的MultiActionController
- ioS -UI-菜单栏的实现
- POJ 1696 Space Ant(凸包-卷包裹法)
- CXF实战之拦截器Interceptor(四)
- Delphi 提升进程权限到SeDebugPrivilege
- hadoop2.7.1 nutch2.3 二次开发windows环境
- Ubuntu更换源
- 关于Chronometer(计时器)暂停的问题
- 社説 20150728 調布小型機墜落 整備点検に問題はなかったか