发表于: 2017-07-26 22:57:02
2 1171
今天完成的事情:
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。
@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都可以随时随地访问它。
<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)
参考资料:
@PathVariable和@RequestParam的区别
web.xml详解
PS:理了下springmvc,终于可以看懂博客中的一些内容了
评论