springmvc vo参数怎么实例vo

基于spring3.0.5 mvc 简单用户管理实例 - 太阳神喻 - ITeye技术网站
博客分类:
临时应急做了两个月的ASP.NET,终于又回到Java上来了,还是Java感觉亲切啊。马上要开发一个新的项目,最近感觉spring mvc势头比较猛,就了解了一下,以前觉得spring mvc用起来较麻烦,所以一直用struts2,但了解了一下spring3 mvc,一下子就喜欢上了它,下个项目决定就用它了,RESTful URL、几乎0配置、不需要实现任何接口或继承任何类的Controller、方法级别的拦截,一个方法对应一个url、灵活的方法参数和返回值、多种view、处理ajax的请求更是方便...
下面的小例子用了spring mvc和hibernate,只是简单的用户增删改查,没有用ajax,ajax的版本在这里:(),给和我一样准备用spring mvc的朋友参考一下吧。jar包如图:
web.xml如下:
&?xml version="1.0" encoding="UTF-8"?&
&web-app version="2.5" xmlns="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"&
&!-- 默认的spring配置文件是在WEB-INF下的applicationContext.xml --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&filter-name&Set Character Encoding&/filter-name&
&filter-class&org.springframework.web.filter.CharacterEncodingFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&UTF-8&/param-value&
&/init-param&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&&!-- 强制进行转码 --&
&/init-param&
&filter-mapping&
&filter-name&Set Character Encoding&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!-- 默认所对应的配置文件是WEB-INF下的{servlet-name}-servlet.xml,这里便是:spring3-servlet.xml --&
&servlet-name&spring3&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&spring3&/servlet-name&
&!-- 这里可以用 / 但不能用 /* ,拦截了所有请求会导致静态资源无法访问,所以要在spring3-servlet.xml中配置mvc:resources --&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&/web-app&
applicationContext.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-autowire="byName"&
&!-- 注意上面的default-autowire="byName",如果没有这个声明那么HibernateDaoSupport中的sessionFactory不会被注入 --&
&!-- 约定优于配置,约定优于配置 --&
&bean id="dataSource" class="mons.dbcp.BasicDataSource"&
&property name="driverClassName" value="com.mysql.jdbc.Driver"&&/property&
&property name="url" value="jdbc:mysql://127.0.0.1:3306/test"&&/property&
&property name="username" value="root"&&/property&
&property name="password" value="root"&&/property&
&bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource"/&
&property name="mappingDirectoryLocations"&
&list&&!-- 这里直接映射的pojo类所在的包,简单方便不用没次加一个pojo类都需要到这里来添加 --&
&value&classpath:com/fsj/spring/model&/value&
&/property&
&property name="hibernateProperties"&
&prop key="hibernate.dialect"&
org.hibernate.dialect.MySQLDialect
&prop key="hibernate.show_sql"&
&/property&
&!-- 自动扫描组件,这里要把web下面的 controller去除,他们是在spring3-servlet.xml中配置的,如果不去除会影响事务管理的。--&
&context:component-scan base-package="com.fsj.spring"&
&context:exclude-filter type="regex" expression="com.fsj.spring.web.*"/&
&/context:component-scan&
&!-- 下面是配置声明式事务管理的,个人感觉比用注解管理事务要简单方便 --&
&bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory"&&/property&
&aop:config&
&aop:advisor pointcut="execution(* com.fsj.spring.service.*Service.*(..))" advice-ref="txAdvice"/&
&/aop:config&
&tx:advice id="txAdvice" transaction-manager="txManager"&
&tx:attributes&
&tx:method name="get*" read-only="true"/&
&tx:method name="query*" read-only="true"/&
&tx:method name="find*" read-only="true"/&
&tx:method name="load*" read-only="true"/&
&tx:method name="*" rollback-for="Exception"/&
&/tx:attributes&
&/tx:advice&
spring3-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:p="http://www.springframework.org/schema/p"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName"&
&!-- 约定优于配置,约定优于配置 --&
&!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd --&
&mvc:resources mapping="/img/**" location="/img/"/&
&mvc:resources mapping="/js/**" location="/js/"/&
&mvc:resources mapping="/css/**" location="/css/"/&
&!-- 扫描所有的controller --&
&context:component-scan base-package="com.fsj.spring.web" /&
&!-- InternalResourceViewResolver默认的就是JstlView所以这里就不用配置viewClass了 --&
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="prefix" value="/WEB-INF/view/"&&/property&
&property name="suffix" value=".jsp"&&/property&
&!-- 启用基于注解的处理器映射,添加拦截器,类级别的处理器映射 --&
&bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"&
&property name="interceptors"&
&bean class="com.fsj.spring.util.MyHandlerInterceptor"/&
&/property&
配置一个基于注解的定制的WebBindingInitializer,解决日期转换问题,方法级别的处理器映射,
有人说该bean要放在context:component-scan前面,要不然不起作用,但我试的放后面也可以啊。
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&
&property name="cacheSeconds" value="0" /&
&property name="webBindingInitializer"&
&bean class="com.fsj.spring.util.MyWebBinding" /&
&/property&
log4j的就不贴出来了。
两个HelloWorldController如下:
package com.fsj.spring.
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.ModelAndV
* 不需要实现任何接口,也不需要继承任何的类
@Controller
public class HelloWorldController {
* 方法都可以接受的参数(参数数量和顺序没有限制): HttpServletRequest,HttpServletResponse,HttpSession(session必须是可用的) ,PrintWriter,Map,Model,@PathVariable(任意多个), @RequestParam(任意多个), @CookieValue (任意多个),@RequestHeader,Object(pojo对象) ,BindingResult等等
* 返回值可以是:String(视图名),void(用于直接response),ModelAndView,Map ,Model,任意其它任意类型的对象(默认放入model中,名称即类型的首字母改成小写),视图名默认是请求路径
@RequestMapping("/helloWorld")
public ModelAndView helloWorld() {
ModelAndView mav = new ModelAndView();
mav.setViewName("login");
mav.addObject("message", "Hello World!");
package com.fsj.spring.
import java.util.L
import javax.servlet.http.HttpServletR
import mons.lang.StringU
import org.springframework.stereotype.C
import org.springframework.ui.M
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestP
import com.fsj.spring.model.TD
import com.fsj.spring.model.TU
import com.fsj.spring.service.IDeptS
import com.fsj.spring.service.IUserS
import com.fsj.spring.util.C
@Controller
@RequestMapping("/user")
public class UserController {
private IUserService userS
private IDeptService deptS
public IDeptService getDeptService() {
return deptS
public void setDeptService(IDeptService deptService) {
this.deptService = deptS
public IUserService getUserService() {
return userS
public void setUserService(IUserService userService) {
this.userService = userS
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(@RequestParam String name,@RequestParam String password,Model model,HttpServletRequest request) throws Exception{
TUser user1 = userService.getUserByName(name);
if(user1 == null) {
model.addAttribute("message", "用户不存在");
return "login";
}else if(password == null || !password.equals(user1.getPassword()) ){
model.addAttribute("message", "密码错误");
return "login";
request.getSession().setAttribute(Constants.USER_INFO_SESSION, user1);
return "welcome";
@RequestMapping(value="/login1",method=RequestMethod.POST)
public String login1(TUser user,HttpServletRequest request,Model model) throws Exception{
TUser user1 = userService.getUserByName(user.getName());
if(user1 == null) {
model.addAttribute("message", "用户不存在");
return "login";
}else if(user.getPassword() == null || !user.getPassword().equals(user1.getPassword()) ){
model.addAttribute("message", "密码错误");
return "login";
request.getSession().setAttribute(Constants.USER_INFO_SESSION, user1);
return "welcome";
@RequestMapping(value="/list")
public String list(Model model,HttpServletRequest request) throws Exception {
List&TUser& userList = userService.getUserList();
model.addAttribute("userList", userList);
List&TDept& deptList = deptService.getDeptList();
model.addAttribute("deptList", deptList);
if(StringUtils.isNotBlank(request.getParameter("resMess")) && StringUtils.isNotBlank(request.getParameter("opeMess"))) {
model.addAttribute("message",setOperateMessage(request.getParameter("resMess"),request.getParameter("opeMess"),"用户"));
return "user/list";
private String setOperateMessage(String resMess,String opeMess,String modMess) {
//TODO 以后可以和写日志结合在一起
String ope = "";
String res = "";
if(Constants.OPERATE_TYPE_ADD.equals(opeMess)) {
ope = "增加";
}else if(Constants.OPERATE_TYPE_UPDATE.equals(opeMess)) {
ope = "更新";
}else if(Constants.OPERATE_TYPE_DELETE.equals(opeMess)) {
ope = "删除";
if(Constants.RESULT_SUCCESS.equals(resMess)) {
res = "成功";
}else if(Constants.RESULT_FAILED.equals(resMess)) {
res = "失败";
return ope + modMess +
* 同样的请求路径 user/add 如果是get请求就转到增加页面去,如果是post请求就做add操作
@RequestMapping(value="/add",method=RequestMethod.GET)
public String toAdd(Model model) throws Exception{
List&TDept& deptList = deptService.getDeptList();
model.addAttribute("deptList", deptList);
return "user/add";
@RequestMapping(value="/add",method=RequestMethod.POST)
public String doAdd(TUser user,Model model) throws Exception{
userService.addUser(user);
model.addAttribute("resMess", Constants.RESULT_SUCCESS);
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("resMess", Constants.RESULT_FAILED);
model.addAttribute("opeMess", Constants.OPERATE_TYPE_ADD);
//重定向,防止重复提交,当然这样不能完全解决重复提交的问题,只是简单处理一下,若要较好的防止重复提交可以结合token做,
//以“/”开关,相对于当前项目根路径,不以“/”开关,相对于当前路径
//return "redirect:/user/list";
return "redirect:list";
* Restful模式路径:
* 注意这里/update/{id}和@PathVariable("id")中id要一致,这样不管用debug模式还是release模式编译都没问题
* 也可以简写成@PathVariable int id,但这样只能以debug模式编译的时候正确,如果用release编译就不正确了,因为如果用release模式编译会把参数的名字改变的
* 一般IDE工具都是以debug模式编译的,javac是以release模式编译的
* 同样的请求路径 user/update 如果是get请求就转到增加页面去,如果是post请求就做update操作
@RequestMapping(value="/update/{id}",method=RequestMethod.GET)
public String toUpdate(@PathVariable("id") int id, Model model) throws Exception{
model.addAttribute("user",userService.getUserById(id));
model.addAttribute("deptList", deptService.getDeptList());
return "user/update";
@RequestMapping(value="/update/{id}",method=RequestMethod.POST)
public String doUpdate(@PathVariable("id") int id, TUser user,Model model) throws Exception{
userService.updateUser(user);
model.addAttribute("resMess", Constants.RESULT_SUCCESS);
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("resMess", Constants.RESULT_FAILED);
model.addAttribute("opeMess", Constants.OPERATE_TYPE_UPDATE);
//return "redirect:../list";
//重定向,防止重复提交,以“/”开关,相对于当前项目根路径,不以“/”开关,相对于当前路径
return "redirect:/user/list";
@RequestMapping(value="/delete/{id}")
public String delete(@PathVariable("id") int id,Model model)throws Exception{
userService.deleteUser(id);
model.addAttribute("resMess", Constants.RESULT_SUCCESS);
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("resMess", Constants.RESULT_FAILED);
model.addAttribute("opeMess", Constants.OPERATE_TYPE_DELETE);
return "redirect:/user/list";//重定向
下面的例子中没有jar包,jar太大了超过10M了,请自己加jar包
(288.3 KB)
下载次数: 8214
浏览 12463
论坛回复 /
(110 / 92994)
&dependency&&&& &groupId&mysql&/groupId&&&& &artifactId&mysql-connector-java&/artifactId&&&& &version&5.0.2&/version&&/dependency& &dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-aop&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-asm&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-aspects&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-beans&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-context&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-context-support&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-core&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-expression&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-jdbc&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-orm&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-oxm&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-test&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-tx&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-web&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-webmvc&/artifactId&&&& &version&3.0.5.RELEASE&/version&&/dependency&&dependency&&&& &groupId&commons-lang&/groupId&&&& &artifactId&commons-lang&/artifactId&&&& &version&2.1&/version&&/dependency&&dependency&&&& &groupId&commons-dbcp&/groupId&&&& &artifactId&commons-dbcp&/artifactId&&&& &version&1.2.2&/version&&/dependency&&dependency&&&& &groupId&commons-pool&/groupId&&&& &artifactId&commons-pool&/artifactId&&&& &version&1.5.3&/version&&/dependency&&dependency&&&& &groupId&commons-logging&/groupId&&&& &artifactId&commons-logging&/artifactId&&&& &version&1.1.1&/version&&/dependency&&dependency&&&& &groupId&aopalliance&/groupId&&&& &artifactId&aopalliance&/artifactId&&&& &version&1.0&/version&&/dependency&&dependency&&&& &groupId&org.aspectj&/groupId&&&& &artifactId&aspectjweaver&/artifactId&&&& &version&1.6.8&/version&&/dependency&&dependency&&&& &groupId&commons-collections&/groupId&&&& &artifactId&commons-collections&/artifactId&&&& &version&3.1&/version&&/dependency&&dependency&&&& &groupId&org.apache.geronimo.specs&/groupId&&&& &artifactId&geronimo-jta_1.1_spec&/artifactId&&&& &version&1.1&/version&&/dependency&&dependency&&&& &groupId&log4j&/groupId&&&& &artifactId&log4j&/artifactId&&&& &version&1.2.14&/version&&/dependency&&dependency&&&& &groupId&org.slf4j&/groupId&&&& &artifactId&slf4j-api&/artifactId&&&& &version&1.5.8&/version&&/dependency&&dependency&&&& &groupId&org.slf4j&/groupId&&&& &artifactId&slf4j-log4j12&/artifactId&&&& &version&1.5.8&/version&&/dependency&&dependency&&&& &groupId&org.springframework&/groupId&&&& &artifactId&spring-hibernate3&/artifactId&&&& &version&2.0.8&/version&&/dependency&&dependency&&&& &groupId&cglib&/groupId&&&& &artifactId&cglib&/artifactId&&&& &version&2.2&/version&&/dependency&&dependency&&&& &groupId&javassist&/groupId&&&& &artifactId&javassist&/artifactId&&&& &version&3.9.0.GA&/version&&/dependency&&dependency&&&& &groupId&ehcache&/groupId&&&& &artifactId&ehcache&/artifactId&&&& &version&1.2.3&/version&&/dependency&&dependency&&&& &groupId&dom4j&/groupId&&&& &artifactId&dom4j&/artifactId&&&& &version&1.6.1&/version&&/dependency&&dependency&&&& &groupId&antlr&/groupId&&&& &artifactId&antlr&/artifactId&&&& &version&2.7.6&/version&&/dependency&通过maven管理jar,很方便
lz
学习springMVC是什么书呢???
最好的书就是spring官方文档
先感谢LZ分享。
在学习中发现几个问题,希望LZ及各位大侠能给予帮助。
源码是下来之后,根据LZ给的jar包截图导入,spring相关的都是3.0.5的,其他的可能会有一些不同。
继承HibernateDaoSupport时,会报错说:HibernateDaoSupport cannot be resolved to a type。
然后我查了一下,说是缺少spring.jar,我当时在spring3中没找到这个,然后添加了spring2.5中的这个jar,就不报错了。
但是还有几个import会报错:
1、org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
2、org.springframework.web.bind.WebDataBinder;
3、org.springframework.web.bind.support.WebBindingInitializer;
4、org.springframework.web.bind.annotation.RequestMapping;
5、org.springframework.web.servlet.ModelAndView;
6、mons.lang.StringUtils;
7、org.springframework.web.bind.annotation.PathV
8、org.springframework.web.bind.annotation.RequestM
9、org.springframework.web.bind.annotation.RequestM
10、org.springframework.web.bind.annotation.RequestP
还有一个是配置文件里的mons.dbcp.BasicDataSource
仔细查了一下jar里面的内容,这个类都有,但不知道为什么不识别。
因为之前我整合过SSH,也被jar的问题困扰过,所以我就把之前项目的jar全部移植过来,没有报错。但是启动tomcat时又会报方法找不到的错:
java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getRegistry();
但是我找了一下,存在这个方法啊。
难道还是jar包冲突的问题,往楼主解答。
spring3之后就没有spring.jar的整合包了,你又加了旧版本的jar又加了新版本的jar,肯定会有jar包冲突了,找jar有那么难吗?去spring官网下载一个资源包,里面大部分的jar包都有了。
太阳神喻 写道mienimaer 写道“一个方法对应一个url”,我想弱弱地问一下,如果在注解中,URL的值重复了,怎么办?
你为什么要让它重复啊
团队多个成员一起做,彼此直接不知道是否有使用过某一个url呀?
所以说约定优于配置,你们项目组对命名就没有一个约定吗?如果是用户管理模块的命名就是/user/add和/user/update。。。。如果是部门的就是/dept/add和/dept/update。。。。这样的命名还会出现重复的吗?
好的命名习惯不但能减少很多的配置,避免无谓的错误,一旦养成习惯还可以加快开发效率。
约定优于配置
mienimaer 写道“一个方法对应一个url”,我想弱弱地问一下,如果在注解中,URL的值重复了,怎么办?
你为什么要让它重复啊
团队多个成员一起做,彼此直接不知道是否有使用过某一个url呀?
ModelAndView 不怎么用了,更多的是用Model,@ModelAttribute
我也是,ModelAndView这东西几乎不用
你好,如果是Spring+Hibernate JPA中增加事务的控
制,怎么来配置?
&bean id="myTxManager" class="org.springframework.orm.jpa.JpaTransactionManager"&
&&& &property name="entityManagerFactory" ref="myEmf"/&
& &/bean&
& &bean id="myProductService" class="product.ProductServiceImpl"&
&&& &property name="productDao" ref="myProductDao"/&
& &/bean&
&
& &aop:config&
&&& &aop:pointcut id="productServiceMethods" expression="execution(* product.ProductService.*(..))"/&
&&& &aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods"/&
& &/aop:config&
& &tx:advice id="txAdvice" transaction-manager="myTxManager"&
&&& &tx:attributes&
&&&&& &tx:method name="increasePrice*" propagation="REQUIRED"/&
&&&&& &tx:method name="someOtherBusinessMethod" propagation="REQUIRES_NEW"/&
&&&&& &tx:method name="*" propagation="SUPPORTS" read-only="true"/&
&&& &/tx:attributes&
& &/tx:advice&
supben 写道 private IDeptDao deptD
public IDeptDao getDeptDao() {
return deptD
弱弱的问下,这里为什么不用加 @Autowired 啊?
因为有这个:default-autowire="byName"
那还要写set 方法么
用@Autowired是不用写set方法的哦。
& 上一页 1
浏览: 77748 次
来自: 武汉
有jar包没?麻烦啊!
学习了。呵呵。
前台的easyUI是不是漏掉了addOrUpdate这部分的代 ...
持久化对象不能直接返回,需要转为vo再返回,你这边需要再转一次 ...
谢谢你的文章,可是哥啊 你的数据表是什么样的啊}

我要回帖

更多关于 springmvc项目实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信