首先,新建一个web项目。在new->project->web->Dynamic Web Project,输入工程名即可。新建后的web项目结构如下:
之后,先导入spring Java包。spring下载地址为http://repo.springsource.org/libs-release-local/org/springframework/spring/。除此之外,还需导入commons-logging.jar文件,下载地址为http://download.csdn.net/download/readgo_xxg/5339124。必须要导入commons-logging.jar,不然会报错。导入Java包方式:直接将所有的Java包复制到WEB-INF下的lib文件夹下。
然后,配置web.xml文件。这个文件在创建项目时,就已经存在于WEB-INF文件夹下面了。基本配置如下:
SpringMVCTest
springMvc
org.springframework.web.servlet.DispatcherServlet
1
springMvc
/
index
这里面是最基本的配置,只定义了spring自动扫描的package路径。当spring容器启动时,会自动扫描com.test下带有@Component标注的类,并加载到spring容器中。关于spring自动装配Bean的内容可以参考这篇博客http://blog.csdn.net/kevin_zhai/article/details/52238575。
@Controller
public class GetMessageController {
@Autowired
private GetMessageService getMessageService;
@RequestMapping(value={"/getMessage"},method = {RequestMethod.GET})
public ModelAndView getMessage() {
ModelAndView mav = new ModelAndView("WEB-INF/HelloWorld.jsp");
mav.addObject("message",getMessageService.getMessage());
return mav;
}
}
public interface GetMessageService {
public String getMessage();
}
@Service
public class GetMessageServiceImpl implements GetMessageService{
@Autowired
private GetMessageDao getMessageDao;
@Override
public String getMessage() {
return getMessageDao.getMessage();
}
}
其中,GetMessage是一个接口,GetMessageServiceImpl是对接口的实现。@Service是把GetMessageServiceImpl类自动加载到Spring容器中,上面的Controller中就可以自动注入GetMessageServiceImpl类到getMessageService变量中。
public interface GetMessageDao {
public String getMessage();
}
@Repository
public class GetMessageDaoImpl implements GetMessageDao{
@Override
public String getMessage() {
return "Hello World";
}
}
其中,GetMessageDao是dao层接口,GetMessageDaoImpl是对接口的实现。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Insert title here
Message : ${message}
四、问题总结
下面说一下自己在配置项目过程中遇到的问题,供大家参考。
1. 一定要导入spring Java包时,导入commons-logging.jar。
2. Java包要复制到WEB-INF下的lib文件夹下,开始我是在根目录下新建的lib文件夹,将Java包复制过去的,结果出现DispatcherServlet类找不到的异常。
3. 配置servlert.xml时,一定要把扫描的包写对,不然spring无法自动装配Bean,网页访问时访问不到Controller,就会出现404错误。