Spring mvc基于Java的配置无法正常工作。控制台显示没有错误,但我的jsp页面没有显示 [英] Spring mvc Java based Configuration not working. Console display no error but my jsp page is not showing

查看:116
本文介绍了Spring mvc基于Java的配置无法正常工作。控制台显示没有错误,但我的jsp页面没有显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我正在将我的简单演示项目从bean配置转换为纯java基础配置。 Bean配置可以很好地创建表和全部。但我的java配置不显示任何页面。我解决了许多错误,现在控制台显示没有指定问题的错误。这里是我的代码,请找出最新的错误,或者我错过了配置中的任何东西。我对Spring很陌生,对于基于java的配置来说相当新颖。这些是我从中获取代码的网站。



http://codehustler.org/blog/spring-security-tutorial-form-login-java-config/

for hibernate我使用本教程

http://websystique.com/spring/spring4-hibernate4-mysql-maven-integration-example-using-annotations/



我的课程

  1。 AppConfiguration 
package com.kharoud.configuration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
$ b @Configuration
@ComponentScan({com.kharoud})
@Import({MvcConfiguraion.class,RepositoryConfiguration.class})
public class AppConfiguration {

}



<2> 2.MvcConfigurtion

  package com.kharoud.configuration; 

导入org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;


@EnableWebMvc
@Configuration
public class MvcConfiguraion extends WebMvcConfigurerAdapter {


@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
configurer.enable();

$ b @Bean
public InternalResourceViewResolver getInternalResourceViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix(/ WEB-INF / views);
resolver.setSuffix(。jsp);
返回解析器;



code
$ b 3.RepositoryConfiguration
包com.kharoud.configuration;

  import java.util.Properties; 

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@PropertySource({classpath:hibernate.properties})
public class RepositoryConfiguration {

@ Autowired
私人环境环境;

@Bean
public LocalSessionFactoryBean sessionFactory(){
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String [] {com.kharoud.model});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;


@Bean
公共属性hibernateProperties(){
属性properties = new Properties();
properties.put(hibernate.dialect,environment.getRequiredProperty(hibernate.dialect));
properties.put(hibernate.show_sql,environment.getRequiredProperty(hibernate.show_sql));
properties.put(hibernate.hbm2ddl.auto,environment.getRequiredProperty(hibernate.hbm2ddl.auto));
返回属性;


@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getRequiredProperty(jdbc.driverClassName));
dataSource.setUrl(environment.getRequiredProperty(jdbc.url));
dataSource.setUsername(environment.getRequiredProperty(jdbc.username));
dataSource.setPassword(environment.getRequiredProperty(jdbc.password));
返回dataSource;


$Be
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s){
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(s);
返回txManager;




$ b 4.SpringConfigurationInitializer

  package com.kharoud.configuration.initilizer; 

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

导入com.kharoud.configuration.AppConfiguration;


public class SpringConfigurationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
$ b @Override
protected Class<?> [] getRootConfigClasses(){
return new Class [] {AppConfiguration.class};

$ b $覆盖
protected Class<> [] getServletConfigClasses(){
// TODO自动生成的方法存根
返回null;
}

@Override
protected String [] getServletMappings(){

return new String [] {/};
}

}

只添加了这些新类。我删除了我的web.xml。

稍后我将添加Spring Security配置类



这是我的控制台输出

  2015年2月25日下午2:32:13 org.apache.catalina.core.AprLifecycleListener init 
信息:基于APR的Apache Tomcat Native在java.library.path中找不到在生产环境中获得最佳性能的库:C:\ Program Files \Java\jdk1.8.0_25\bin; C:\Windows\Sun\Java\\ \\ bin; C:\ Windows \ system32; C:\Window s; C:/ Program Files / Java / jre1.8.0_25 / bin / server; C:/ Program Files / Java / jre1.8.0_25 / bin ; C:/ Program Files / Java / jre1.8.0_25 / lib / amd64; C:\ Program Files \Oracle\Java\javapath; C:\Windows\ system32; C:\ Windows; C: \Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShe ll\v1.0\; C:\程序文件\Java\jdk1.8.0_25\bin ;; C:\ECLIPSE\eclipse ;;。
Feb 25,2015 2:32:14 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
警告:[SetPropertiesRule] {Server / Service / Engine / Host / Context}设置属性的来源'to'org.eclipse.jst.jee.server:ProjectDemo'找不到匹配的属性。
2015年2月25日下午2点32分14秒org.apache.coyote.AbstractProtocol init
INFO:初始化ProtocolHandler [http-bio-8080]
2015年2月25日2:32 :14 PM org.apache.coyote.AbstractProtocol init
INFO:初始化ProtocolHandler [ajp-bio-8009]
2015年2月25日下午2点32分14秒org.apache.catalina.startup。 Catalina加载
INFO:在1063 ms中处理的初始化
2015年2月25日下午2:32:14 org.apache.catalina.core.StandardService startInternal
INFO:启动服务Catalina
2015年2月25日下午2点32分14秒org.apache.catalina.core.StandardEngine startInternal
INFO:启动Servlet引擎:Apache Tomcat / 7.0.47
2015年2月25日下午2:32:15 org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO:使用[SHA1PRNG]创建会话ID生成的SecureRandom实例需要[217]毫秒。
2015年2月25日下午2点32分18秒org.apache.catalina.core.ApplicationContext log
INFO:在类路径上检测到Spring WebApplicationInitializers:[com.kharoud.configuration.initilizer.SpringConfigurationInitializer@389ae113]
2015年2月25日下午2点32分18秒org.apache.catalina.core.ApplicationContext log
INFO:初始化Spring根WebApplicationContext
log4j:WARN没有appender可以找到记录器(组织。 springframework.web.context.ContextLoader)。
log4j:WARN请正确初始化log4j系统。
2015年2月25日下午2点32分26秒org.apache.catalina.core.ApplicationContext log
INFO:初始化Spring FrameworkServlet'dispatcher'
Feb 25,2015 2:32:26 PM org.apache.coyote.AbstractProtocol start
INFO:Starting ProtocolHandler [http-bio-8080]
2015年2月25日下午2点32分26秒org.apache.coyote.AbstractProtocol start
INFO:启动ProtocolHandler [ajp-bio-8009]
2015年2月25日下午2点32分26秒org.apache.catalina.startup.Catalina start
信息:服务器启动11876 ms

MyHomeController

  package com.kharoud; 

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class HomeController {

@RequestMapping(/)
public String welcome(Model model){
返回指数;
}
}

Myindex.jsp文件位于WEB-INF / views文件夹下的文件夹

 视图可以通过bean配置正确解析。 


解决方案

谢谢您的回答。我发现了这个问题。当我在我的MvcConfiguration类的顶部写了@ComponentScan时,它工作并且显示页面。


Hello i am converting my simple demo project from bean configuration to pure java based configuration. Bean configuration works fine creating tables and all. But my java configuration is not displaying any pages. I solved many errors bur now console shows no error specifying the problem. here's my code please find whats wrong, or have i missed anything in the configuration. I am new to spring and fairly new to java based configuration. These are the sites from which i took code.

http://codehustler.org/blog/spring-security-tutorial-form-login-java-config/

for hibernate i use used this tutorial

http://websystique.com/spring/spring4-hibernate4-mysql-maven-integration-example-using-annotations/

My classes

1. AppConfiguration
 package com.kharoud.configuration;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;

 @Configuration
 @ComponentScan({"com.kharoud"})
 @Import({MvcConfiguraion.class, RepositoryConfiguration.class})
 public class AppConfiguration {

 }

2.MvcConfigurtion

package com.kharoud.configuration;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import       org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;


@EnableWebMvc
@Configuration
public class MvcConfiguraion extends WebMvcConfigurerAdapter{


@Override
public void configureDefaultServletHandling( DefaultServletHandlerConfigurer configurer ){      
    configurer.enable();
}

@Bean
public InternalResourceViewResolver getInternalResourceViewResolver(){      
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views");
    resolver.setSuffix(".jsp");
    return resolver;

}
}

3.RepositoryConfiguration package com.kharoud.configuration;

import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:hibernate.properties" })
public class RepositoryConfiguration {

@Autowired
private Environment environment;

@Bean
public LocalSessionFactoryBean sessionFactory(){        
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(dataSource());
    sessionFactory.setPackagesToScan(new String[] {"com.kharoud.model"});
    sessionFactory.setHibernateProperties(hibernateProperties());
    return sessionFactory;
}

@Bean
public Properties hibernateProperties() {
    Properties properties = new Properties();
    properties.put("hibernate.dialect",      environment.getRequiredProperty("hibernate.dialect"));
    properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
    properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
    return properties;
}

@Bean
public DataSource dataSource() {        
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
    dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
    dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
    dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
    return dataSource;
}

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s) {
   HibernateTransactionManager txManager = new   HibernateTransactionManager();
   txManager.setSessionFactory(s);
   return txManager;
}
}

4.SpringConfigurationInitializer

package com.kharoud.configuration.initilizer;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import com.kharoud.configuration.AppConfiguration;


public class SpringConfigurationInitializer extends     AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] { AppConfiguration.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    // TODO Auto-generated method stub
    return null;
}

@Override
protected String[] getServletMappings() {

    return new String[] { "/" };
}

}

only added these new classes. I deleted my web.xml.

Later on i will add Spring Security configuration class

this is my console output

Feb 25, 2015 2:32:13 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal     performance in production environments was not found on the java.library.path: C:\Program     Files\Java\jdk1.8.0_25\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Window     s;C:/Program Files/Java/jre1.8.0_25/bin/server;C:/Program   Files/Java/jre1.8.0_25/bin;C:/Program     Files/Java/jre1.8.0_25/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\      system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShe     ll\v1.0\;C:\Program Files\Java\jdk1.8.0_25\bin;;C:\ECLIPSE\eclipse;;.
 Feb 25, 2015 2:32:14 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
 WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting   property 'source' to 'org.eclipse.jst.jee.server:ProjectDemo' did not find a   matching property.
Feb 25, 2015 2:32:14 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Feb 25, 2015 2:32:14 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Feb 25, 2015 2:32:14 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1063 ms
Feb 25, 2015 2:32:14 PM org.apache.catalina.core.StandardService  startInternal
INFO: Starting service Catalina
Feb 25, 2015 2:32:14 PM org.apache.catalina.core.StandardEngine  startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Feb 25, 2015 2:32:15 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using  [SHA1PRNG] took [217] milliseconds.
Feb 25, 2015 2:32:18 PM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath:  [com.kharoud.configuration.initilizer.SpringConfigurationInitializer@389ae113]
Feb 25, 2015 2:32:18 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger  (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
Feb 25, 2015 2:32:26 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Feb 25, 2015 2:32:26 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 25, 2015 2:32:26 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 25, 2015 2:32:26 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 11876 ms

MyHomeController

package com.kharoud;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class HomeController {

    @RequestMapping("/")
    public String welcome(Model model){
        return "index";
    }
}

Myindex.jsp file is in WEB-INF/views folder under webapp folder

The views were properly resolved with bean configuration.

解决方案

Thank you for your answers. I found the problem. When i wrote @ComponentScan on top of my MvcConfiguration class it worked and pages are displaying.

这篇关于Spring mvc基于Java的配置无法正常工作。控制台显示没有错误,但我的jsp页面没有显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆