发表于: 2017-08-19 19:31:45

2 1019


今天完成的事情:

MVC是指模型(model)+视图(view)+控制器(controller)

model应该是很多之前写过的bean,view用于显示页面的一些工作,controller就是处理发送的请求

流程:

1、用户发送一个请求到前端控制器(就是web.xml里的DispatcherServlet),前端控制器收到请求后自己不进行处理,而是找相关的处理器进行处理;

2、前端控制器把请求发给处理器映射器HandlerMapping,它可以根据请求的信息进行映射,选择对应的处理器;

3、处理器映射器返回一个handler给前端控制器,然后前端控制器再调用一个处理器适配器HandlerAdapter去执行这个handler。配置HandlerAdapter可以支持更多的控制器

4、handler的处理就交给控制器(controller)了,在这里我们应该可以处理业务对象了,就是之前任务一的东西,然后返回一个ModelAndView对象(模型数据,图像什么的);

5、返回的ModelAndView需要解析一下,用视图解析器(ViewResolver),在***-servlet.xml里配置,可以生成真正的view;

6、前端控制器再收到这个view,并进行渲染,应该在.jsp里进行吧;

7、前段控制器向用户返回结果,这样就结束了。

在web.xml中,配置DispatcherServlet

<servlet-name>Dispatcher</servlet-name>
<servlet-class>
 org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

1表示servlet随服务启动

为了能处理中文的post请求,添加一个过滤器

<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
   </init-param>
   <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

指明controller所在的包,扫描其中的注解,在servlet.xml中

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

之后又在resources里配置了一下连接数据库用的xml,之后应该要进行事务操作了

<!-- 扫描service层 -->
<context:component-scan base-package="com.jnshu.service"/>

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
   <property name="driverClassName"
             value="com.mysql.jdbc.Driver"/>
   <property name="url"
             value="jdbc:mysql://www.yaoyuan.com:3306/mybatis?characterEncoding=UTF-8" />
   <property name="username"
             value="root" />
   <property name="password" value="yao17023" />
   <!-- 关键配置 -->
   <!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 -->
   <property name="initialSize" value="3" />
   <!-- 最小连接池数量 -->
   <property name="minIdle" value="2" />
   <!-- 最大连接池数量 -->
   <property name="maxActive" value="15" />
   <!-- 配置获取连接等待超时的时间 -->
   <property name="maxWait" value="10000" />

   <!-- 性能配置 -->
   <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
   <property name="poolPreparedStatements" value="true" />
   <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

   <!-- 其他配置 -->
   <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
   <property name="timeBetweenEvictionRunsMillis" value="10000" />
   <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
   <property name="minEvictableIdleTimeMillis" value="300000" />
   <!--   建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,
             执行validationQuery检测连接是否有效。 -->
   <property name="testWhileIdle" value="true" />
   <!-- 这里建议配置为TRUE,防止取到的连接不可用 ,申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。-->
   <property name="testOnBorrow" value="true" />
   <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
   <property name="testOnReturn" value="false" />
</bean>

看见师兄们都用的jetty,我就搜了一下,jetty相比于tomcat算是轻量级的web容器。下载安装并配置了jetty

这样就配置好了,据说可以用插件来弄这个,好像要配置pom文件,查了一下

<plugins>
 <plugin>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-maven-plugin</artifactId>
   <version>9.3.7.v20160115</version>
   <configuration>
     <stopPort>9966</stopPort>
     <stopKey>foo</stopKey>
     <stopWait>10</stopWait>
   </configuration>
</plugin>

这样配置应该。

运行了一下这次的jetty

感觉速度比tomcat还慢了..错觉么

正在看jQuery,又是个框架

明天计划的事情:这回是真去爬山_(:з」∠)_

遇到的问题:

REST风格接口到底怎么写呢,好像是在controller里返回一个json,简单看了一下还没弄懂

收获:

SpringMVC的流程大概弄懂了,细节的东西比如怎么实现业务逻辑目前还不知道。

禅道链接:禅道炸了啊!!


返回列表 返回列表
评论

    分享到