Spring MVC之SimpleFormController的简单使用

很明显,SimpleFormController是处理表单提交比较好的一种控制器。下面就一个小例子对SimpleFormController的用法做一个总结。

首先提纲挈领,我们的例子是做一个新闻提交模块。

如下图所示:

在输入http://localhost:8080/javalearn1.0/addNews.html后,即打开此页面,从数据库中读出新闻类别并在select框中显示。而用户填完新闻标题和新闻内容后,即保存至数据库,并刷新页面,在提交新闻按钮下方显示:保存数据成功。

第一步的显示对应一个ShowNewsClassController,而第二步保存对应AddNewsController。

首先是javalearn-servlet.xml的配置:

[html] view plain copy
  1. <beanid="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  2. <propertyname="mappings">
  3. <props>
  4. <propkey="/addNews.html">showNewsClassController</prop>
  5. <propkey="/addNews1.html">addNewsController</prop>
  6. </props>
  7. </property>
  8. </bean>

对应的ShowNewsClassController为:

[java] view plain copy
  1. packagecom.javalearn.control;
  2. importjavax.servlet.http.HttpServletRequest;
  3. importjavax.servlet.http.HttpServletResponse;
  4. importorg.springframework.web.servlet.ModelAndView;
  5. importorg.springframework.web.servlet.mvc.AbstractController;
  6. importcom.javalearn.service.*;
  7. importjava.util.*;
  8. importcom.javalearn.model.*;
  9. publicclassShowNewsClassControllerextendsAbstractController{
  10. privateJavalearnServicejavalearnService;
  11. publicJavalearnServicegetJavalearnService(){
  12. returnjavalearnService;
  13. }
  14. publicvoidsetJavalearnService(JavalearnServicejavalearnService){
  15. this.javalearnService=javalearnService;
  16. }
  17. @Override
  18. protectedModelAndViewhandleRequestInternal(HttpServletRequestarg0,
  19. HttpServletResponsearg1)throwsException{
  20. //TODOAuto-generatedmethodstub
  21. List<Tbclass>list=this.javalearnService.readNewsClass();
  22. Map<String,List<Tbclass>>map=newHashMap<String,List<Tbclass>>();
  23. map.put("myclass",list);
  24. returnnewModelAndView("addNews","map",map);
  25. }
  26. }

这个类就是在页面加载时,读取新闻类别并进行显示。

对应的addNews.jsp页面为:

[java] view plain copy
  1. <%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
  2. <%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <htmlxmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
  7. <title>欢迎访问JavalearnJAVA学习网</title>
  8. </head>
  9. <body>
  10. <formaction="addNews1.html"method="post">
  11. <p>新闻类别:
  12. <selectname="myclass">
  13. <c:forEachitems="${map.myclass}"var="Parameter">
  14. <optionvalue="${Parameter.id}">${Parameter.classname}</option>
  15. </c:forEach>
  16. </select></p>
  17. <p>新闻标题:<inputname="title"type="text"/></p>
  18. <p>新闻内容:<textareaname="mycontent"rows="10"cols="100"></textarea></p>
  19. <p><inputtype="submit"value="提交新闻"/></p>
  20. </form>
  21. <fontcolor="red">${map.message}</font>
  22. </body>
  23. </html>

即,点击了提交按钮后,跳转至addNews1.html。而由在javalearn-servlet.xml中配置可知,此url交由AddNewsController进行处理。AddNewsController继承至SimpleFormController,onSubmit方法处理提交事件。且form中的各个控件的name对应AddNewsController的CommandClass的属性。类似于Struts2或JavaBean的用法。

[java] view plain copy
  1. packagecom.javalearn.control;
  2. importorg.springframework.validation.BindException;
  3. importorg.springframework.web.servlet.ModelAndView;
  4. importorg.springframework.web.servlet.mvc.SimpleFormController;
  5. importcom.javalearn.model.Tbclass;
  6. importcom.javalearn.model.Tbnews;
  7. importcom.javalearn.service.*;
  8. importjava.util.*;
  9. /*
  10. *author:TammyPi
  11. *function:添加新闻的Controller
  12. */
  13. publicclassAddNewsControllerextendsSimpleFormController{
  14. privateJavalearnServicejavalearnService;
  15. publicAddNewsController()
  16. {
  17. this.setCommandClass(Tbnews.class);
  18. this.setCommandName("Tbnews");
  19. }
  20. publicJavalearnServicegetJavalearnService(){
  21. returnjavalearnService;
  22. }
  23. publicvoidsetJavalearnService(JavalearnServicejavalearnService){
  24. this.javalearnService=javalearnService;
  25. }
  26. protectedModelAndViewonSubmit(Objectcommand,BindExceptionbindException)throwsException
  27. {
  28. Tbnewstbnews=(Tbnews)command;
  29. Mapmap=newHashMap<String,String>();
  30. List<Tbclass>list=this.javalearnService.readNewsClass();
  31. if(this.javalearnService.saveNews(tbnews))
  32. {
  33. map.put("message","保存数据成功!");
  34. }
  35. else
  36. {
  37. map.put("message","保存数据失败!");
  38. }
  39. map.put("myclass",list);
  40. returnnewModelAndView(this.getSuccessView(),"map",map);
  41. }
  42. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值