当前位置:编程学习 > JAVA >>

struts2,spring,hibernate全注解,struts2零配置,不配置struts.xml,找不到方法



首先是web.xml配置: 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

<!-- 延时加载 --> 
<filter> 
<filter-name>hibernateFilter</filter-name> 
<filter-class> 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 
</filter-class> 
<!-- 是否单个Session--> 
<init-param> 
<param-name>singleSession</param-name> 
<param-value>true</param-value> 
</init-param> 
<!-- 你在applicationCointext*.xml中配置的SessionFactory bean的id名--> 
<init-param> 
<param-name>sessionFactoryBeanName</param-name> 
<param-value>sessionFactory</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>hibernateFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

<!-- Struts --> 
<filter> 
<filter-name>struts2</filter-name> 
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
<init-param> 
<param-name>actionPackages</param-name> 
<param-value>com.abin.ssh.action</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 



   <!-- Spring --> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>classpath*:com/abin/ssh/spring/applicationContext.xml</param-value> 
</context-param> 
<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- utf-8编码 --> 
<filter> 
<filter-name>Spring character encoding filter</filter-name> 
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
<init-param> 
<param-name>encoding</param-name> 
<param-value>utf8</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>Spring character encoding filter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 


  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list> 
</web-app> 


紧接着是LoginAction.java 
package com.abin.ssh.action; 

import javax.servlet.http.HttpServletRequest; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.apache.struts2.ServletActionContext; 
import org.apache.struts2.convention.annotation.Action; 
import org.apache.struts2.convention.annotation.Namespace; 
import org.apache.struts2.convention.annotation.ParentPackage; 
import org.apache.struts2.convention.annotation.Result; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Scope; 
import org.springframework.stereotype.Controller; 

import com.abin.ssh.bean.Login; 
import com.abin.ssh.service.LoginService; 
import com.opensymphony.xwork2.ActionSupport; 

@SuppressWarnings("serial") 
@ParentPackage("struts-default") 
@Namespace("/ssh") 
@Controller 
@Scope("prototype") 
public class LoginAction extends ActionSupport { 
private static final Log log=LogFactory.getLog(LoginAction.class); 
public String username; 
public String password; 
@Autowired 
private LoginService loginService; 

@Action(value="register",results={@Result(location="/ssh/welcome.jsp",name="success")}) 
public String register() { 
HttpServletRequest request = ServletActionContext.getRequest(); 

boolean flag = false; 
Login bean = new Login(); 
bean.setUsername(username); 
bean.setPassword(password); 
log.info("username="+username); 
log.info("password="+password); 
try { 
flag = this.loginService.add(bean); 
} catch (Exception e) { 
// TODO: handle exception 
e.printStackTrace(); 

if (flag == true) { 
request.getSession().setAttribute("message", "operate success"); 
return SUCCESS; 
} else { 
request.getSession().setAttribute("message", "operate failure"); 
return ERROR; 





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; 





--------------------编程问答-------------------- //login.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
  <head> 
    <s:head/> 
    <title>struts2 show</title> 
  </head> 
  <body> 
    <form   method="post" action="register" > 
    用户名:<br/> 
    <input type="text" name="username" /><br/> 
    密码:<br/> 
    <input type="text" name="password" /><br/> 
    <input type="submit" value="注册"/> 
    <input type="reset" value="重置" /> 
    </form> 
  </body> 
</html> 



当我提交表单的时候总是提示找不到register方法? 

报错信息如下: 
HTTP Status 500 - 

-------------------------------------------------------------------------------- 

type Exception report 

message 

description The server encountered an internal error () that prevented it from fulfilling this request. 

exception 

java.lang.NoSuchMethodException: $Proxy19.register() 
java.lang.Class.getMethod(Class.java:1605) 
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75) 
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488) 
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs. 


-------------------------------------------------------------------------------- 

Apache Tomcat/6.0.32 
--------------------编程问答-------------------- <form method="post" action="login!register/action" >  
--------------------编程问答-------------------- <form method="post" action="login!register.action" >   
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,