Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
</web-app>
注:
Java配置方式不需要配置Web.xml。
WebAppInitializer.java
package config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
* 按照AbstractAnnotationConfigDispatcherServletInitializer的定义
* 它会同时创建DispatcherServlet和ContextLoaderListener
* 可用此种方式代替传统的web.xml
* @author yd
*
*/
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class}; //指定根配置类,例如:ApplicationContext.xml
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class }; //ָ指定Web配置类,例如:springMVC.xml
}
@Override
protected String[] getServletMappings() { //将DispatcherServlet映射到"/"
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() { //字符过滤器,防止乱码
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return new Filter[] {characterEncodingFilter};
}
}
RootConfig.java
package config;
import java.beans.PropertyVetoException;
import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
public class RootConfig {
//配置sessionFactory
@Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource)
{
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setPackagesToScan(new String[] {"entity"}); //扫描实体类包
Properties properties = new Properties();
properties.setProperty("dialect", "org.hibernate.dialect.MySQDialect");//添加hibernate的属性
properties.setProperty("hibernate.hbm2ddl.auto", "update");
sessionFactory.setHibernateProperties(properties);
return sessionFactory;
}
//配置事务管理
@Bean
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory)
{
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory);
return transactionManager;
}
//配置c3p0数据源
@Bean
public ComboPooledDataSource dataSource() throws PropertyVetoException {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/book");
ds.setUser("root");
ds.setPassword("123456");
return ds;
}
}
WebConfig.java
package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.ViewResolver;
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;
@Configuration
@EnableTransactionManagement
@EnableWebMvc //启动SpringMVC
@ComponentScan("test") //启动组件扫描
public class WebConfig extends WebMvcConfigurerAdapter {
//配置JSP视图解析器
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
//配置静态资源的处理
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable(); //对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet
}
}
至此基本配置都配好了。我们来测试一下:
testDao.java
package test.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import entity.Admin;
@Repository
public class testDao {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
private Session getSession() {
return sessionFactory.getCurrentSession();
}
public Admin getAdmin(int id) {
Admin admin = (Admin)this.getSession().get(Admin.class, id);
return admin;
}
}
testService.java
package test.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import entity.Admin;
import test.dao.testDao;
@Service
@Transactional
public class testService {
@Autowired
private testDao testDao;
public Admin getAdmin(int id) {
return testDao.getAdmin(id);
}
}
testController.java
package test.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import entity.Admin;
import test.service.testService;
@Controller
public class testController {
@Autowired
private testService testService;
@RequestMapping("/test")
public String test()
{
int id = 2;
Admin admin = testService.getAdmin(id);
System.out.println(admin.getAdminname());
return "success";
}
}
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Java配置查询成功
</body>
</html>
跳转的成功页面
查询出的Adminname
最终项目目录结构
添加其他的Servlet和Filter可以看我另一篇文章Java 配置SpringMVC。