发表于: 2017-10-30 23:00:34
1 670
一.今日完成
1.任务代码发布到线上,打开修真院主页,只有文字,缺少图片和布局;chrome browser控制台提示:
向师兄请教后,在Spring 配置文件中加入以下元素:
<context:annotation-config/>
<mvc:annotation-driven />
<mvc:default-servlet-handler />
成功解决问题.
其中三者作用分别是:
(1)<context:annotation-config/>的作用是向Spring容器注册以下四个BeanPostProcessor:
AutowiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
RequiredAnnotationBeanPostProcessor
1)如果想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。
2)如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor Bean。
3)如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
4)如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。
按照传统的方式进行配置将会非常繁琐,Spring提供了一个简便的方式:<context:annotation-config/>,使用该元素可以自动声明以上注解。
由于<context:component-scan base-package=”xx.xx”/>也包含了自动注入上述Bean的功能,所以<context:annotation-config/> 可以省略。如果两者都进行了配置,则只有前者有效。由于前者配置项目包名异常("com.oab.quagga"),所以这里单独再声明<context:annotation-config/>
<!-- 自动扫描 @Controller-->
<context:component-scan base-package="com.oab.quagga"/>
(2)<context:component-scan/>标签是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。而<mvc:annotation-driven/>是告知Spring,启用注解驱动。然后Spring会自动注册以上的Bean到工厂中,来处理请求。
(3)在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。如果默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />
2.引入第三方API,在pom.xml文件中引入依赖,IDEA提示找不到相应jar文件,直接把容联,SendCloud等提供的jar包引入项目lib库即可,打包发布时候也会被封装进去.
3.测试短信验证功能,新建一个随机数生成类,在向注册者发送验证码时候调用相关方法产生随机六位数字
public class RandNum {
/**
* 产生随机的六位数
*/
public static String getSix(){
Random rad=new Random();
String result = rad.nextInt(1000000) +"";
if(result.length()!=6){
return getSix();
}
return result;
}
//生成六位数验证码
public static void main(String[] args) {
for (int j = 0; j < 10; j++) {
System.out.println(getSix());
}
}
}
二.明日计划
1.梳理Spring MVC框架里applicationContext和WebapplicationContext这两个业务层与web层容器配置信息,了解谷歌元素的作用;
2.继续整理任务代码,完成API调用功能.
三.遇到问题
暂无
四.收获
以上.
评论