发表于: 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的流程大概弄懂了,细节的东西比如怎么实现业务逻辑目前还不知道。
禅道链接:禅道炸了啊!!
评论