发表于: 2017-07-26 22:57:02

2 1172


今天完成的事情:

1. 学习JSP

2. 能成功在网页里显示查询到的信息

3. 学习web.xml,spring-mvc.xml文件

4. 学习各种注解的作用


明天计划的事情:

1.  使用SpringMVC完成REST添加接口

2. Service完成接口的添加实现

3. 了解postmainPostMan


遇到的问题:

1. 自动扫描的各种作用和区别

<mvc:annotation-driven/>

可以使用@Controller。 @RequestMapping,<mvc:resources>


<context:annotation-config/>配置的作用

<context:annotation- config/>向 Spring容器注册AutowiredAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor以及PersistenceAnnotationBeanPostProcessor这4个BeanPostProcessor。

是为了让系统能够识别相应的注解。
的作用是向Spring容器注册
@Autowired
@ Resource 、@ PostConstruct、@ PreDestroy
@PersistenceContext

@Required

用法:

< context:component-scan base-package = "com.tasktwo.controller" > 

     < context:exclude-filter type = "annotation"  expression = "org.springframework.stereotype.Service" /> 

</ context:component-scan >

<context:component-scan/>标签是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。


2. classpath和classpath*的区别

 classpath是web项目的类路径,为classes目录下面。这些配置文件放在无论哪里,编译之后没有特殊情况的话都直接在classes下面。maven工程这两个同名资源存在时,classpath只从第一个符合条件的classpath中加载资源,而classpath*会从所有的classpath中加载符合条件的资源。classpath*,需要遍历所有的classpath,效率肯定比不上classpath,因此在项目设计的初期就尽量规划好资源文件所在的路径,避免使用classpath*来加载。




收获:

1. 学习JSP

<c:forEach items="${study}" var="study" varStatus="st">
   <tr>
       <td>name:${study.name}</td>
       <p>user_id:${study.user_id}</p>
       <p>study_type:${study.study_type}</p>
       <p>qq:${study.qq}</p>
       <p>entry_data:${study.entry_data}</p>
       <p>graduated:${study.graduated}</p>
       <p>url:${study.url}</p>
       <p>wish:${study.wish}</p>
       <p>know_from:${study.know_from}</p>
   </tr>
</c:forEach>


2. 能成功在网页里显示查询到的信息




3. 学习web.xml文件

文件的加载顺序为:context-param -> listener -> filter -> servlet

<context-param> 
作用:该元素用来声明整个WEB项目内的上下文初始化参数。

param-name 设定上下文的参数名称。必须是唯一名称

param-value 设定的参数名称的值
<context-param>元素含有一对参数名和参数值,用作应用的
Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任何的Servlet和jsp都可以随时随地访问它


<listener> 
该元素用来注册一个监听器类。可以收到事件什么时候发生以及用什么作为响应的通知。事件监听程序在建立、修改和删除会话或servlet环境时得到通知。常与context-param联合使用。
listen-class 指定监听类,该类继承ServletContextListener 包含初始化方法contextInitialized(ServletContextEvent event) 和 销毁方法contextDestoryed(ServletContextEvent event)
监听器Listener就是在application,session,request三个对象创建,销毁,或者往其中添加修改删除属性时自动执行代码的功能组件。Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。



<servlet></servlet>

 Servlet通常称为服务端小程序,是服务端的程序,用于处理及响应客户的请求。Servlet是一个特殊的Java类,创建Servlet类自动继承HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应这两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。另外HttpServlet有两个方法:

  init(ServletConfig config):创建Servlet实例时,调用该方法初始化Servlet资源。

  destory():销毁Servlet实例时,自动调用该方法回收资源。

   每个Servlet的运行都遵循如下生命周期:

  (1)创建Servlet实例。

  (2)Web容器调用Servlet的init()方法,对Servlet进行初始化。

  (3)Servlet初始化之后,将一直存在与容器之中,用于响应客户端请求,如果客户端发送GET请求,容器调用Servlet的doGet()方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost()方法处理并响应请求。或者统一使用service()方法处理来响应用户请求。

  (4)Web容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭Web应用时销毁Servlet实例。



4. 学习各种注解的作用

@Controller

@Controller 用于标记在一个类上,使用它标记的类就是一个 Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器,

需要<mvc:annotation-driven/>Controller 交给Spring 管理,好让它能够识别标记的@Controller


@RequestMapping

@RequestMapping 来映射URL 到控制器类,或者是到Controller 控制器的处理方法上。当@RequestMapping 标记在Controller 类上的时候,里面使用@RequestMapping 标记的方法的请求地址都是相对于类上的@RequestMapping 而言的;当Controller 类上没有标记@RequestMapping 注解时,方法上的@RequestMapping 都是绝对路径。


@Autowired 

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。

需要用<context:annotation-config/>,方法在遇到的问题2


@PathVariable

@PathVariable是用来获得请求url中的动态参数

配合@RequestMapping使用

public String detail(HttpServletRequest request, HttpServletResponse response, Model model, @PathVariable String user_id)
@RequestMapping(value="/a/student/detail/{user_id}",method = RequestMethod.GET)




参考资料:

Spring@Autowired注解与自动装配

@PathVariable和@RequestParam的区别
web.xml详解




PS:理了下springmvc,终于可以看懂博客中的一些内容了




返回列表 返回列表
评论

    分享到