编程心得第一期--2012-11-12

   注:以下这些是编程过程中遇到的一些问题。有的小到只要到网上一搜或者在官方文档里面一翻就能找到答案,有的却是自己花了一点时间去实验,最后才得到的一点结果。不过现在我把这些小的或者大的都放到这里。主要是为了自己能方便的记忆。那些很容易的记住的就当做知识点,那些实验了的结论就当做备忘。

第一期

   Q1:<mvc:annotation-driven>是什么?

   A1:相当于注册了DefaultAnnotationHandlerMapping(实现类型级别的注解)和AnnotationMethodHandlerAdapter(实现方法级别的注解)

 

  Q2:<context:component-scan>

  A2:用来包扫描。这个还有其他的意义,暂时不写,因为还不是很懂

 

  Q3:<context:annotation-cofig>

  A3:表示注册了一下bean:

    AutoWireAnnotaitionBeanPostProcessor  --@Autowired.

    CommonAnnotationBeanPostProcessor --@Resource @PostConstruct @PreDestroy

    PersisternceAnnotationBeanPostProcessor --@PersistenceContext

    RequireAnnotationBeanPostProcessor  --@Required

  如果使用了<context:component-scan>则 这个可以不写。

 

Q4:<context:component-scan> <mvc:annotation-driven> <context:annotation-cofig>三者之间怎么搭配?

A4:如果使用了<context:component-scan>则<context:annoation-config>可以省略。那么就只要考虑前面两者。试了一下。全部放在[servlet-name]-servlet.xml中或者applicationContext.xml中是可以的。只是。如果<context-component-scan>放在applicationContext.xml,而将<mvc:annotaiton-driven>放到[servlet-name]-servlet.xml中,则不行。

T:两者放到一起可以理解。因为[servlet-name]-servlet.xml是applicationContext.xml的子WebApplicationContext。但是分开为什么不行。这个还要思考。

           

 

Q5:在类上加@RequestMapping和在方法上加@RequestMapping有何区别

A5:首先是,对应的类不同。在类上,处理的是DefaultAnnotationHandlerMapping,在方法上是AnnotationMethodHandlerAdapter。这个在Q1上有说明那个。其次:如果在类上有这样的一个请求@RequestMapping("/simple")。 在方法上有这样的几个请求@RequestMapping("/index.do"),@RequestMapping("/login.do")。则访问方法上的请求时,simple/index或者simple/login。即:都以类上的请求作为根(这个也不能说是根)

 

 

Q6:如果项目中是这样的,该怎么访问路径:

WebContext

----users

  --admin

--images

--js

--WEB-INF

        --admin

--index.jsp

--adduser.jsp

A:在Controller中。return adduser。访问根目录。admin/aduser,访问admin/adduser。admin/WEB-INF/adduser。就是访问WEB-INF/admin/adduser.jsp

前提:org.springframework.web.servlet.view.InternalResourceViewResovler的prefix的属性为"/"

 

Q7:在使用spring的时候,通过getBean取到的bean不匹配、

A7:应该返回接口,IService s = ctx.getBean("name",IService.class)。而不是getBean("name",ServiceImpl)。当然,这是在有接口的情况下。

 

Q8:在@RequestParam("param")的时候,如果没有传递参数怎么办?

A8:可以使用他的requried=false(这个是好久之前遇到的问题了)

 

Q9:在搭建Maven web项目的时候,为什么不能出来web app的骨架(就是有那个webapp)的那个

A9:不选择骨架(quick-start)都不需要。点击simple,将打包方式改成war。(这是用eclipse的Maven插件来做的)

 

Q10:自定义异常时,在其他程序中throw new MyException,却还是要提示需要使用try catch

A10:自定义异常extends RunTimeException 而不是 Exception。

 

Q11:出现版本冲突,但经过排查发现并没有冲突发生

A11:使用Maven的 clean install命令。

 

Q12:前台使用UTF-8。后台spring mvc @ResponseBody返回数据是乱码?

A12:1:提交方式用post 。其次,@ResponseBody默认编码是ISO-8859-1。在[servlet-name]-serlet.xml中配置bean:AnnotationMethodHandlerMapping。里面有个属性可以覆盖。网上有例子。

 

Q13:用svn删除某个文件夹后,有时候提交出现异常。

A13:在svn确定要删除某个文件夹的话,删掉后马上提交。如果忘记提交,则先revover(恢复),然后删除+提交

 

Q14:Struts blank包下的例子运行不了,报找不到路径

A14:将struts.xml example.xml放到src下。而不是之前放的地方。因为,你如果把他放到eclipse中的话,class下面的会重新编译。

 

Q15:使用淘宝,怎样取消登录短信验证

A15:我的淘宝---操作保护设置--设置--操作保护--登录---按照提示

 

Q16:路径问题:比如在admin/login.jsp下发起请求<action = "login.do"。则页面跳转路径是:http://localhost:8080/myApp/admin/login.do。而我需要的是跳转是 /myApp/login.do。(即从跟路径开始)

A16:在action中这样写:<action ="./login.do" 当然,也可以获取项目名。其中要表达的是跟路径为./

 

Q17:不能运行struts2-showcase

A17:因为我复制到eclipse后,先构建,然后清理,web-app下的classes清空了,所以不行。必须要包那个class中的文件放到src目录下。这个和Q14类似。

 

Q18:spring 的mapping

A18: href="<c:url value='/simple.'">   ---- myApp/simple

          href="/simple"  则不行。应该是./simple  (也是路径问题)

 

Q19:在powerdesinger的类图中,继承和实现分别选哪个个?

A19:在powerdesinger的类图中,继承和实现都用Generalization。软件能自动识别

 

Q20:idref 和ref区别在哪里?

A20:idref是引用另外一个bean的bean name。而ref则是直接引用一个bean

 

Q21:@Respository,@Component我们一般在需要自动扫描的类上写上这样的注解,但是在接口上要写吗?

A21:类似必须要写(如果不使用component-scan则另当别论)。接口上则不必要写。

T:因为接口是无法实例化的,所以写了也没用。因为写这个相当于初始化的时候实例化标注了该注解的类。但是接口是无法实例化的。所以,不需要写。

 

Q22:@Controller @Respoty @Service @Component 与Autowired

A22:前面的那些主要是用spring mvc 和component-scan中。后者主要是IOC中(当然,这个说法并不准确。只是让我区分)

 

Q23:使用mysql练习spring 的事务,发现控制台中,数据已经回滚了, Rolling back JDBC transaction on Connection 。但是数据库中仍然插入

A23:mysql的root账户,是自动提交的。所以,要设置,或者选择另外的数据库。后面用sqlite和postgre试了一下。事务回滚后,数据库中的数据也就删除了。

 

 

Q24:spring中配置占位符?

A24:<context:property-placeholder location="classpath:jdbc.properties" />或者

<bean id="propertyConfigurer"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location">

<value>/WEB-INF/jdbc.properties</value>

</property>

</bean>

 

 

http://inmethetiger.iteye.com/blog/1733222

 

 

 

 

 

 

你可能感兴趣的:(2012)