spring MVC要注意的地方:
控制器代码如下:
package com.mvc.jn.controller; import java.util.Map; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @org.springframework.stereotype.Controller public class HelloWorldController { // http://localhost:8088/springMVCannotations/hello2 @RequestMapping(value = "/hello2", method = RequestMethod.GET) public String sayHello2( @RequestParam(value = "name", required = false) String username, Map<String, Object> map) { map.put("message1", username); System.out.println("my name:" + username); return "hello22"; } // http://localhost:8088/springMVCannotations/hello3 @RequestMapping(value = "/hello3", method = RequestMethod.GET) public ModelAndView sayHello3( @RequestParam(value = "name", required = false) String username) { System.out.println("my name:" + username); ModelAndView mav = new ModelAndView("hello33"); mav.getModel().put("message1", username); return mav; } // http://localhost:8088/springMVCannotations/hello44?name=whuang @RequestMapping(value = "/hello44", method = RequestMethod.GET) // 与网上说的不一致,网上说方法名就是试图 public Model hello4( @RequestParam(value = "name", required = false) String username, Model model) { System.out.println("my name:" + username); model.addAttribute("message1", username); return model; } @RequestMapping(value = "/hello555", method = RequestMethod.GET) public Model hello5(String username, Model model) { System.out.println("my name:" + username); model.addAttribute("message1", username); return model; } }
ViewResolver配置如下:
<!-- ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
问题1:调用控制器中的hello4 方法后会返回那个视图?
按照网上的说法,会返回“hello4”(方法名),如下图
但是经过我反复测试,发现它返回的视图是“hello44”,即@RequestMapping 指定的value。
问题2:访问方法hello5时,必须传参数username 吗?
答:不是必须的。
什么情况下是必须的呢?
当有注解@RequestParam(value = "username")时才是必须的,若不传该参数将报错.
url 是“http://localhost:8088/springMVCannotations/hello555?username=ccc”时,会自动设置username的值
问题3:spring MVC与hibernate4集成时报错:No Session found for current thread
详情请参阅我的另一篇博客:http://hw1287789687.iteye.com/blog/1949852
问题4:启动tomcat时报错:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
原因是:pom.xml中缺少:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.3.RELEASE</version> </dependency>
问题5:spring MVC 使用bean接收参数时如何传参?
比如查询时,controller 把参数注入到bean中,
@RequestMapping(value = "/show") public String show(Model model,User user,UserView view,HttpSession session) throws CloneNotSupportedException { if(!ValueWidget.isNullOrEmpty(view.getPageFlag())&&view.getPageFlag().equals(Constant2.PAGEFLAG_NOT_QUERY)){ System.out.println("不是查询"); user=(User)session.getAttribute("user2"); try { BeanUtils.copyProperties(view, user); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }else{//查询 System.out.println("是查询"); session.setAttribute("user2", user); } PageAssistant.paging(user,true,view, userDao); model.addAttribute("view", view); model.addAttribute("currentTime", TimeHWUtil.getCurrentTimestamp().getTime()); return "user/show"; }
方法show()的参数user会保存请求要素,那么在页面上是如何编写表单控件name的呢?
<Li> <label>用户名:</label><input type="text" name="user.username" value="${view.username }" /> </Li> <Li> <label>真实姓名:</label><input type="text" name="user.name" value="${view.name }" /> </Li>
上述代码是不对的,应该是:
<Li>
<label>用户名:</label><input type="text" name="username" value="${view.username }" />
</Li>
<Li>
<label>真实姓名:</label><input type="text" name="name" value="${view.name }" />
</Li>
注意:spring MVC 的依赖注入与struts2 是不同的.
spring MVC 的学习资料见附件spring MVC学习笔记.zip
Controller 中Action 参数
, User user, 和
, @RequestParam(required = false) User user,
是有区别的.
如果包含@RequestParam ,则无法自动注入对象的成员变量
相关推荐
随着时代和科技的进步,人们的生活水平越来越高,私家车的数量不断上涨,随之产生了一些问题,其中就包括停车难,很多地方人们根本找不到停车位,经常有司机为了找停车位转来转去,走了很多弯路,更重要的是浪费了...
SpringMVC(注解)上传文件需要注意的几个地方: 1、form的enctype=”multipart/form-data”,这个是上传文件必须的 2、applicationContext.xml配置: 代码如下: <!– SpringMVC上传文件时,需要配置Multipart...
(毕业设计)-基于spring boot+mybatis+spring mvc+bootstrap开发停车位管理系统(调用百度地图API)设计与实现(源码) 项目描述 随着时代和科技的进步,人们的生活水平越来越高,私家车的数量不断上涨,随之产生了...
根据自己的学习过程详细整理了 Spring使用中常用的注解大全和解释,及学习参看的网址资料; 方便大家学习这块相关内容使用使用,并对需要注意的地方做了标注;
这种方式,要注意的一个地方就是。在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。 运行这个测试...
项目技术: spring+spring mvc+mybatis+bootstrap+jquery+html+springboot+thymeleaf 前台地址: http://localhost:8082/user/login 账号gaoc 密码123123 用户注册后台地址: http://localhost:8082/admin/login 账号...
springboot停车位管理系统源码 开发语言 : JAVA 数据库 : MySQL 开发工具 : Eclipse 源码类型 : WebForm 注意:不带技术支持,有...使用技术: spring+spring mvc+mybatis+bootstrap+jquery+html+springboot+thymeleaf
使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加了admin的permission,所以...
使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加了admin的permission,所以...
本项目代码托管在和两个地方,最新代码会先推送在github上,码云上会在github上更新完之后进行同步。 本项目多个数据库都用到了hibernate ,如果没有提供sql文件。则启动时会根据代码映射自动生成数据库表,请在启动...
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...