发表于: 2017-08-25 23:51:40
2 905
今天完成的任务
1.完成一个小demo
先展示结果
.png)

完成这个demo也是不简单,因为我任务1是用MyBatis基于注解的方式完成的,整个程序比较简单简洁,所以打算任务2也使用基于注解的SpringMVC去实现RESTful接口,保证整个程序够简洁。
要使用SpringMVC就要初始化servlet,一般是通过2个XML文件实现:
web.xml —— 初始化DispatcherServlet(前端控制器)
[servlet-name]-servlet.xml —— 初始化InternalResourceViewResolver(视图解析器)
但是我想用注解的方法去配置前端控制器和视图解析器。前几天看的书是用纯注解的,但因为书的作者用的IDE和我不一样,而且他构建工具用的不是Maven而是gredle,代码直接照搬过来行不通。
然后在网上换了各种姿势找了很久都没有找到用纯注解的方式去配置,花了蛮多时间也没研究出来。
晚上回家以后就想着要是今天写不出来就不睡了。结果这么一下决心还挺管用的,最后是书上的方法用一半,网上的方法用一半实现的。虽然出现很多问题,但也一一解决了。
下面是过程和部分代码展示:
1)基于注解的配置
接口WebApplicationInitializer有一个抽象实现类AbstractAnnotationConfigDispatcherServletInitializer,这个实现类可以保证配置自动被检测并应用于Servlet3容器的初始化中。
这个抽象实现类里面有三个方法被重写了:
getServletConfigClasses()用于配置DispatcherServlet
getRootConfigClasses()用于配置Servlet的监听器ContextLoaderListener
getServletMappings()把一个或多个路径映射到前端控制器,表示它会是应用的默认Servlet,它会处理进入应用的所有请求
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
2)完成上面的引用的RootConfig.class、WebConfig.class
//配置类WebConfig.class
@Configuration
@EnableWebMvc//启用SpringMVC
@ComponentScan("user.controller")//启用组件扫描
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;
}
//将对静态资源的请求转发到Servlet容器中默认的Servlet上
public void configureDefaultServletHanding(DefaultServletHandlerConfigurer configurer){
configurer.enable();
}
}
//另一个配置类RootConfig.class
@Configuration
public class RootConfig {
public static class WebPackage extends RegexPatternTypeFilter {
}
3)编写控制器
@Controller
@EnableWebMvc
public class HomeController {
@RequestMapping(value="/",method=RequestMethod.GET)
public String home(){
return "home";
}
}
4)编写home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>这是我的第一个JSP页面</h1>
</body>
<html>
5)打包项目成war包,放到jetty的webapps文件夹下
.png)

6)命令行启动jetty
7)输入URL http://localhost:8080/springmvc
遇到的问题
没有找到纯注解的方法去配置Dispatcher,后面大胆尝试实现了
收获
学会用纯注解的方式去去陪Dispatcher
明天的计划
完善demo的代码
实现一个登录注册功能
进度
当前进度 任务2 步骤2
任务开始时间 2017.8.22
预计提交时间 2017.8.27
延期风险 任务比想象的要难,可能要延期2天或者3天才能完全搞定
禅道:还没拆,今天拆
.png)
评论