05-29:
把Ibatis搭建上去后,发现action不起作用,不能进去java代码, 是由于在组合Ibatis时候, 删除了对Action的扫描。
05-30:
调试时候发现不能连上数据库,百度了下ibatis输出sql的做法,发现可以运用上log4j, 查看原来ibatis的demo,就是在src目录下加入一个log4j.properties文件。
# Rules reminder: # DEBUG < INFO < WARN < ERROR < FATAL # Global logging configuration log4j.rootLogger=DEBUG, stdout # My logging configuration... log4j.logger.org.mybatis.jpetstore=DEBUG ## Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
然后调试了下, 发现输出的sql的参数有问题,修改了下, okay!
06-05:
再一次搭框架时候,发现如果把
<!-- enable component scanning (beware that this does not enable mapper scanning!) -->
<context:component-scan base-package="org.springframework.samples.service" />
<context:component-scan base-package="org.springframework.samples.controller"></context:component-scan>
放在
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
</bean>
之前,会报如下等一系列错误:
" org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.samples.persistence.UserMapper org.springframework.samples.service.loginService.userDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.samples.persistence.UserMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}"
放到其后,就会报JDBC找不到的错误. 等待晚上解决.
百度了下说是少了JDBC的驱动包, 用ctrl+T查看了Driver类,是存在于baidu的SDK当中。 找到该jar包, 拷贝到lib下, 启动成功!
06-06
使用了springmvc 注解
<mvc:resources mapping="/javascript/**" location="/resources/javascript/"/>
<mvc:resources mapping="/styles/**" location="/resources/css/"/>
<mvc:resources mapping="/images/**" location="/resources/images/"/>
因为配置servlet时,会拦截静态文件, 所以需要设置静态文件的映射,jsp文件一般都放在web-inf文件夹下。
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在jsp里需要导入<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
jsp里用这种语法调用css文件。<img src="<c:url value="/images/icon_22.gif" />" />
而css,jpg等文件一般只放在webRoot文件夹里。 css文件中只需要按照路径写就可以background: url('../images/icon_22.gif')
别搞混css和jsp
06-11
今天学习把后台的数据在jsp中显示,需要用到ModelAndView, 在里面加入对象,相当于一个map储存键值对。取值时用${obj}, 如果是list类型
则
<c:forEach var="classItem" items="${classes}">
<li>
<span>${classItem}</span>
</li>
</c:forEach>
06-16
写了一个新的dishClassService的部分,有关的Mapper类, 配置都写好了,但是启动tomcat时候就会报错
Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Caches collection already contains value for org.springframework.basic.persistence.DishClassMapper
在配置文件里,觉得是不需要参数,所以没写parameterType
<select id="getDishClasses" parameterType="" resultType="DishClass">
select * from dishClasses
</select>
偶然加了参数后就不报错误了。
06-18
完成了类别管理的增加和删除。
解决了路径的问题。
@RequestMapping(value="/showClasses", method=RequestMethod.GET)
public ModelAndView classesManageCheck(){。。。}
需要在value里设置值。
解决禁止select缓存的问题,在mapper配置文件里删除<cache />这行, 默认是不支持缓存的。
06-21
规范化:需要在requestParam后写上vaue, 对应的是传过来的参数值。 如果没有写这个value, 需要方法的参数和页面的参数对应, 不然不能跑入对应的方法中。
@RequestMapping(value="/deleteMateriaClass", method=RequestMethod.GET)
public String deleteClass(@RequestParam(value="dishId") String materiaId)