简单SpringMVC问题求助

Catwithpizza 2017-02-16 11:07:19
我用@ModelAttribute 方法将JSP传过来的参数封装成对象,但是在controller外面进不来,报500错误

错误:严重: Servlet.service() for servlet [Dispatcher] in context with path [/Test4] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.medto.entity.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.medto.entity.User.<init>()] with root cause
java.lang.NoSuchMethodException: com.medto.entity.User.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:105)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:770)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:363)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2536)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2525)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="com.medto.entity.User"%>
<!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="./WHK/logs" method="post">
user<input type="text" name="username">
password<input type="password" name="password">
<input type="submit" value="log">
</form>
</body>
</html>


User.class:
package com.medto.entity;

public class User {
private String username;
private String password;


public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}

}



DispatcherController.class:
package com.medto.controller;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.medto.entity.User;
@Controller
@RequestMapping("/WHK")
//从页面获取数据模型
@RequestMapping(value="/logs",method=RequestMethod.POST)
public String logs(@ModelAttribute("user")User user){
User user1=new User(user.getUsername(), user.getPassword());
System.out.println("进来了");
System.out.println(user1.getUsername());
return "show";
}

...全文
108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Catwithpizza 2017-02-17
  • 打赏
  • 举报
回复
谢谢大兄弟了 原理我去百度了
Catwithpizza 2017-02-17
  • 打赏
  • 举报
回复
引用 3 楼 pany1209 的回复:
[quote=引用 2 楼 qq_36173526 的回复:] [quote=引用 1 楼 pany1209 的回复:] No default constructor found.....User加个默认构造器试试
不好意思 我这个代码贴错了 是有构造器的
package com.medto.controller;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.medto.entity.User;



@Controller
@RequestMapping("/WHK")
public class DispatcherController  {
//从页面获取数据模型
	@RequestMapping(value="/logs",method=RequestMethod.POST)
	public String logs(@ModelAttribute("user")User user){
		User user1=new User(user.getUsername(), user.getPassword());
		System.out.println("进来了");
		System.out.println(user1.getUsername());
		return "show";
		
 
 }



}
[/quote]你的那个是无参数构造器吗?要不就加个无参数构造器,要不就把你的构造器去掉就可以了[/quote] 嗯嗯 你说的对 好了, 能告诉我下为什么需要这样吗
李德胜1995 2017-02-16
  • 打赏
  • 举报
回复
引用 2 楼 qq_36173526 的回复:
[quote=引用 1 楼 pany1209 的回复:] No default constructor found.....User加个默认构造器试试
不好意思 我这个代码贴错了 是有构造器的
package com.medto.controller;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.medto.entity.User;



@Controller
@RequestMapping("/WHK")
public class DispatcherController  {
//从页面获取数据模型
	@RequestMapping(value="/logs",method=RequestMethod.POST)
	public String logs(@ModelAttribute("user")User user){
		User user1=new User(user.getUsername(), user.getPassword());
		System.out.println("进来了");
		System.out.println(user1.getUsername());
		return "show";
		
 
 }



}
[/quote]你的那个是无参数构造器吗?要不就加个无参数构造器,要不就把你的构造器去掉就可以了
Catwithpizza 2017-02-16
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
No default constructor found.....User加个默认构造器试试
不好意思 我这个代码贴错了 是有构造器的
package com.medto.controller;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.medto.entity.User;



@Controller
@RequestMapping("/WHK")
public class DispatcherController  {
//从页面获取数据模型
	@RequestMapping(value="/logs",method=RequestMethod.POST)
	public String logs(@ModelAttribute("user")User user){
		User user1=new User(user.getUsername(), user.getPassword());
		System.out.println("进来了");
		System.out.println(user1.getUsername());
		return "show";
		
 
 }



}
李德胜1995 2017-02-16
  • 打赏
  • 举报
回复
No default constructor found.....User加个默认构造器试试

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧