67-spring和MyBatis和springmvc的整合

##Spring配置补充和Spring MVC的初识
一、了解Spring的一些额外配置
1.1引用外部的属性文件
··xml

<context:property-placeholder location""/>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <array>
            <value>classpath:db.properties</value>
        </array>
    </property>
</bean>

```xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    	<property name="driverClassName" value="${mysql.driver}"/>
    	<property name="url" value="${mysql.url}"/>
    	<property name="username" value="${mysql.username}"/>
    	<property name="password" value="${mysql.password}"/>
 </bean>
1.2使用JNDI数据源
JavaWeb:数据源和分层开发
为了采用连接池,连接池也是Tomcat内置的(DBCP),我们想公用Tomcat中的一些资源,通过JNDI来进行引用
JNDI:它是能够在一个容器中。多个项目可以共享的资源
-先在服务器中配置context.xml(配置上数据源信息)
-在spring中利用特定的类,去查找此信息。(Context  lookup(JNDI的名字))
-JNDIObjectFactoryBean
 ```xml
  <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="java:comp/env/mysql/resource"/>
  </bean>

1.3了解Spring的Bean的作用域(官人会问)

spring默认的bean是单利的,(singleton),所以如果在类中有属性的话,因为获取的都是同一个对象,那么属性也是一致的。这样就容易导致属性值错误的问题,所以我们一般在
UserController UserService中会依赖一些下一级的代码
1.4了解spring的自动装配

假如你有许多需要进行自动装配的bean,那么可以将其进行拆分,拆分成到单独的配置文件,然后进行统一的在beans标签上配置default-autowrite="XXXX"

1.5掌握spring配置文件的拆分
applicationContext.xml
下面的这种拆分的方法尤其是适用于配置文件是纯xml的

拆分有俩种模式、
第一种就是按照模块进行拆分
-applicationContext-base.xml公共的内容
-applicatioinContext-user.xml用户模块
-applicationContext-provider.xml供应商模块
-applicationContext-bill.xml订单模块
第二种就是按照架构分层进行拆分
-applicationContext-base.xml公共的内容
-applicationContext-controller.xml表现层的内容
-applicationContext-service.xml业务逻辑层的内容
-applicationContext-dao.xml数据访问层的内容

1.6Spring的注解装配

// 就是用来替代XML进行Spring容器配置
@Configuration
public class TestConfiguration {

	/*
	 * <bean id="testService" class="cn.kgc.demo1.test.TestService">
     *		<property name="username" value="测试"></property>
     * </bean>
	 */
	@Bean
	public TestService testService() {
		TestService testService = new TestService();
		testService.setUsername("韩一群");
		return testService;
	}
	
}

2.Spring MVC初识
2.1SpringMvc介绍
表现层拆分
SSM:SpringMVC(表现层框架)+Spring+MyBatis(数据访问层框架)
Spring MVC和Spring都是一家的,或者Spring MVC就是Spring的一个组件而已

mvc设计模式:(Model数据模型 View视图 Controller控制器)
-Model1: View JSP Controller:JSP Model:JavaBean
-Model2:View JSP视图技术 Controller:servlet Model: JavaBean

这种设计模式非常的优秀,很多的框架都采用了此种设计模式,Spring MVC,Struts2

*三层架构
-表现层:(迎宾)
-用于接受客户得请求,接受请求的数据
-指定要调用的业务类
-对业务类处理的结果进行响应
-业务逻辑层(后端的重心就在于业务逻辑,以及高性能)
-对业务进行合理的业务逻辑处理
-增删改:它接受到的表现层数据要持久化到数据库中
-查询:它是去调用指定的数据访问类来进行数据的查询
-尽量保持业务性
-数据访问层
-专门用于操作数据库的代码,尽量保证复用性
*Servlet的问题
-编写一个Servlet每次都要进行doGet/doPost方法的重写(BaseServlet进行优化)
-如果单纯的一个Servlet它只能处理一个请求,(用BaseServlet+opr进行优化)
-接受请求数据的时候,每次都要进行对应的类型的转换(客户端传输的都是String类型)
-每次响应的时候,请求转发的代码非常的多(使用BaesServlet进行优化)

 // 未来的子类只需要继承它 就可以自动拥有它的所有方法实现  所以未来不同的子类不需要每次重写doGet和doPost了
public class BaseServlet extends HttpServlet{ 
    
    public void doGet(HttpServletRequest request,HttpServletResponse response){
        // 接收客户端的opr
        String opr = request.getParamepter("opr");
        // 假设为opr就是对应的请求方法名
        Class clazz = this.getClass();
    	// 从它中获取对应的方法
        Method me = clazz.getMethod(opr,HttpServletRequest.class,HttpServletResponse.class);
        // 执行
        Object result = me.invoke(this,request,response);
        // 优化请求转发
        if(result != null){
            if(result instanceof String){
                String path = (String)result;
                request.getRequestDispatcher(path).forward(request,response);
            }
        }
        // ....
    }
    
    public void doPost(HttpServletRequest request,HttpServletResponse response){
        doGet(request,response);
    }
    
}

2.2
Spring MVC环境的搭建
-1.导包(Spring相关的包+Spring web+Spring webmvc)
-2.配置web.xml(表现层框架要接受客户端请求,并做出响应 所以它必须结合服务器来使用)
-3. - 配置核心控制器DispatcherServlet

```xml
  <!-- 配置核心控制器DispatcherServlet -->
  <!-- Servlet是当第一次请求过来的时候 才会进行实例化和初始化 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 通过初始化参数 可以配置核心控制器对应的核心配置文件位置 -->
  	<!-- 如果你不配置 它默认去/WEB-INF/目录下寻找对应的[servlet-name]-servlet.xml -->
  	<init-param>
  		<!-- contextConfigLocation 它是Spring容器加载配置的入口 -->
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-servlet.xml</param-value>
  	</init-param>
  	<!-- 配置随着服务器的加载而启动  -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- 核心控制器(司令) 它应该接收所有的请求 然后帮你做很多默认处理 然后再交给你去处理业务逻辑 -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
```

-4.编写核心配置文件,名字随便,必须保证核心控制器能够加载核心配置文件
-5.创建控制器Controller,在核心配置文件中进行相关的配置
为了让对应的请求能够找到处理的控制器
了解最初的BeanNameUrlHandlerMapping映射方式
学会掌握注解形式的开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值