发表于: 2018-03-15 23:21:09

1 572


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

今天继续在认真看springMVC

Spring Web 模型-视图-控制(MVC)框架是围绕 DispatcherServlet 设计的,DispatcherServlet 用来处理所有的 HTTP 请求和响应。Spring Web MVC DispatcherServlet 的请求处理的工作流程如下图所示:

对应于 DispatcherServlet 传入 HTTP 请求的事件序列:

  • · 收到一个 HTTP 请求后,DispatcherServlet 根据 HandlerMapping 来选择并且调用适当的控制器

  • · 控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到 DispatcherServlet 中。

  • · DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。

  • · 一旦确定视图,DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。

也对webapp的构建流程有所理解。

首先是web.xml文件中配置applicationContext.xml的路径

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:applicationContext.xml</param-value>
</context-param>

然后是配置监听器ContextConfigListener,从而启动web容器时自动装配applicationContext.xml

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

最后是对dispatcgerServlet的配置,主要是命名servlet、指定配置文件为spring-mvc.xml而不是默认的[servlet-name]-servlet.xml

<servlet>
   <!--DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,
   生成文件中定义的bean-->
   <servlet-name>springMVC</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
       <!--指明了配置文件的文件名,不使用默认配置文件名,而使用spring-mvc.xml配置文件。-->
       <param-name>contextConfigLocation</param-name>
       
       <param-value>classpath:spring-mvc.xml</param-value>
   </init-param>
   <!--是启动顺序,让这个ServletServlet容器一起启动。-->
   <load-on-startup>1</load-on-startup>
   <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
   <servlet-name>springMVC</servlet-name>
   <url-pattern>/</url-pattern><!--会拦截URL中带“/”的请求。-->
</servlet-mapping>

然后就是spring的核心applicationContext.xml

目前跟之前的项目类似,不过看的网上的例子,以下这段不一样,

原项目

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <!-- 指定扫描的包名,如果扫描多个包,每个包中间使用半角逗号分隔-->
   <property name="basePackage" value="com.ev.dao"/>
   <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

mvc项目

<!-- 配置SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
   <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

<!-- 配置mybatis mapper接口,扫描所有dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="com.ev.dao"/>
   <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"/>
</bean>

多了sqlSessionTemplate的bean,暂时不知道是否必要。


spring-mvc.xml中主要是启用注解,扫描包中的@controller类,扫描service

对视图的解析,文件的上传,json进行配置。


写了一个很简单的功能

@Controller
@RequestMapping (value = "/student")
public class StudentController {

private static final Logger logger = Logger.getLogger(StudentController.class);

   @Autowired

   private StudentService studentService;

@RequestMapping(value = "/getStudentModel", method = RequestMethod.GET)

public ModelAndView getStudent(@RequestParam Long id ) throws Exception {
List<Student> student =studentService.getStudentById(id);
   ModelAndView modelAndView =new ModelAndView();
   modelAndView.addObject("student", student);
   modelAndView.setViewName("Student");
   return modelAndView;


· @RequestMapping后的value就是接口(意思不准),就是在url后加/student。。。

· @RequestMapping后的method是使用的http方法,get是取出内容

· 在方法中new 一个 ModelAndView对象,通过实体类设定view,通过setName设定视图名。


jsp还没做太多了解,页面暂时就这样了。。。



今天听师兄讲,jetty可以热部署,不用像tomcat每次要跑一遍。。。

明天配置jetty




明天计划的事情:(一定要写非常细致的内容)

jetty配置,完善功能(任务一的service功能

jsp相关知识

遇到的问题:(遇到什么困难,怎么解决的) 

下午的时候遇到问题,总是报错 Invalid bound statement (not found) 

跑了即便才发现是pom中的resource没有加Java下的xml,之前项目的Mapper.xml都在resource目录下,这次我把mapper的接口和映射文件都放在sourse code directory下了。。。但是没加

<resource>
   <directory>src/main/java</directory>
   <includes>
       <include>**/*.properties</include>
       <include>**/*.xml</include>
   </includes>
   <filtering>false</filtering>
</resource>



收获:(通过今天的学习,学到了什么知识)

springMVC的基础构建


返回列表 返回列表
评论

    分享到