springMVC 入门配置(方便我以后快速复习)

1.0 springMVC 的作用

springMVC 在我看来是用spring的有点来实现MVC架构 这样可以整合许多优秀的框架中的功能
例如本篇重点介绍的spring同mybatis 的整合

2.0 环境配置

  • 开发工具 eclipse
  • jar包 spring-web spring-webmvc spring-mybatis jackson

3.0 步骤

3.1 编写web.xml

a. 使拦截器执行springmvc的拦截器

<--
	默认的拦截器在web.xml 中 配置,下面是把这个拦截功能交给spring的代码
	spring 中如果你没有指定用哪个配置文件去作为spring拦截的配置文件 会自动寻找文件名为
	xxxx-servlet.xml 的配置文件
-->
 
      springweb
      
         org.springframework.web.servlet.DispatcherServlet
      
      <--  下面的代码是指定默认的配置文件 否则会默认寻找名为xxxx-servlet.xml 的配置文件
      
	      contextConfigLocation  
		/WEB-INF/springweb.xml 
       
       -->
      1
   

   
      springweb
      /
   

b. 在web.xml 中加载spring上下文 也就是指定spring配置文件的位置

<--
	下面代码中 就是初始化的作用
-->
	
    org.springframework.web.context.ContextLoaderListener
  
  
  <--
  初始化文件的位置 具体怎么加载的spring已经为我们写好了  我们所可以改的就是
    classpath:Resource/SpringConf.xml
    还句话说 配置此处的目的就是告诉spring要加载的配置文件的路径
-->

  
    contextConfigLocation
    classpath:Resource/SpringConf.xml
  

c. 在web.xml 中编写字符过滤器防止乱码

 
   
        setcharacter
        org.springframework.web.filter.CharacterEncodingFilter
       
        
            encoding
            utf-8
        
       
        
            forceEncoding
            true
        
    
    
        setcharacter
        /*
    

3.2 接下来我们配置springMVC 的配置文件springweb.xml 也就是spring的层次的拦截

a. 首先我们要配置的是视图解析 也就是配置前缀 后缀

<--
例如我有一个a.jsp 文件 位于WEB-INF 目录下  那么这个WEB-INF 就是前缀
这个jsp  就是后缀   这样我们在servlet中只需要返回a  就可以定位到a.jsp 这个文件了
-->
 
      
      
   

b. 接着我们配置json转换器 也就是前后端传数据所需要的格式,这里我们需要jackson 包

  
      
          
              
                text/html;charset=UTF-8  
              
          
      

      
      
          
              
                  
              
          
     
    

c. 我们spring一般会采用注解的方式去拦截请求 这些注解写在我们的代码中 这时候需要在配置文件中
注册,采用注解的方式扫描


d. 对于一些静态资源 例如css 图片等文件 我们不希望用spring的拦截 所以我们要在springweb.xml 说明


	

除了在springweb.xml 中 说明 我们还要在web.xml 中设置处理的方式 这里实际使用中我注视掉了 但是仍然可以访问,我也不知道为什么,可能是我记忆有偏差

    
    default    
    *.js  

这句话的意思是 对于所有的后缀为js 的spring都不拦截

3.3 完整的web.xml 文件中的内容



   
   
        setcharacter
        org.springframework.web.filter.CharacterEncodingFilter
       
        
            encoding
            utf-8
        
       
        
            forceEncoding
            true
        
    
    
        setcharacter
        /*
    
    
    
    default    
    *.js  


  
    org.springframework.web.context.ContextLoaderListener
  
  
    contextConfigLocation
    classpath:Resource/SpringConf.xml
  
  
  
    
      	springweb
      	
        		org.springframework.web.servlet.DispatcherServlet
      	
	  
		contextConfigLocation  
		/WEB-INF/springweb.xml  
	  
      1
   

   
      springweb
      /
   

3.4 完整的springweb.xml 中的内容



   
	
	
	
	
   
  
      
          
              
                text/html;charset=UTF-8  
              
          
      

      
      
          
              
                  
              
          
     
    
    
    
   
      
      
   
   
    


4.0 配置好上面的文件 我们就可以写servlet 了 首先我们写一个前台页面

a 页面 index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Insert title here





	欢迎!!!!!!!!!!
姓名:
这里是div

b 执行请求的t.js

$(document).ready(function(){
	
	$("#sua").click(submit);
});

function submit() {
	var name = $("#name").val();
	
	$.ajax({
		url : "http://localhost:8080/spring_mybatis_mvc/t",
		type : "post",
		data : {
			"yourname":name
		},
		dataType:"json",
		success : function(flag){
			alert(flag)
		}
	});
}

css 文件 无关紧要 不贴了 就是测试一下静态拦截的问题

5.0 接下来是后台

mybatis-spring 是mybatis 与spring的完美整合 这里就直接顺路讲了

5.1 spring 配置文件

这个文件的主要作用就是整合spring与mybatis  同时 配置数据库数据源
这样我们就不需要写mybatis 的配置文件了  只需要写映射文件就ok了

a 文件springConfig.xml 的内容为



        
        
        
        
        	
        	
        	
        	
        
        
        
        	
        	
        		
        			classpath:com/ccut/DAO/*.xml
        		
        	
   	 
        
        
        
        	
        	
        
        
        

b 然后我们建立数据库模型 也就是Model 层

package com.ccut.Model;
/*
 * 对应数据库中的表结构
 * */
public class T {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}
前台参数的封装类 Name.java 

package com.ccut.Model;

public class Name {

private String yourname;

public String getYourname() {
	return yourname;
}

public void setYourname(String yourname) {
	this.yourname = yourname;
}

}

package com.ccut.Model;

public class Name {
	
	private String yourname;

	public String getYourname() {
		return yourname;
	}

	public void setYourname(String yourname) {
		this.yourname = yourname;
	}

	
	

}

c 接下来就是操作数据库的DAO 层 userMapper.xml





    
    


d 然后是这个映射文件对应的操作接口UserMapper.java

package com.ccut.DAO;

import com.ccut.Model.T;

public interface UserMapper {
	public T selectAll();
}

e 有了数据库的模型和操作 我们接下来写业务层services
业务层引用DAO 层 注意是引用不应该包含具体的对象,所以代码如下

接口SelectFromT.java(对没错 和UserMapper .java 一样)

package com.ccut.services;

import com.ccut.Model.T;

public interface SelectFromT {
	public T selectInformation();
}

f 上面接口的实现类SelectFromTimp.java(这里就是引用 引用DAO层的接口 注意DAO层的接口 不需要我们实现,你按照mybatis的标准写,mybatis 就已经帮你实现了)

package com.ccut.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import com.ccut.DAO.UserMapper;
import com.ccut.Model.T;

@Service
public class SelectFromTimp implements SelectFromT {
	@Autowired
	UserMapper mapper;
	@Override
	public T selectInformation() {
		return mapper.selectAll();
	}

}

g 后台逻辑写好了 我们下一步写啥呢?就是 Action 层 也就是servlet
SpringServlet.java 内容如下

package com.ccut.Action;

import java.io.IOException;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ccut.Model.Name;
import com.ccut.services.SelectFromT;
import com.ccut.services.SelectFromTimp;

@Controller
@RequestMapping("/t")
public class SpringServlet {
	@Resource
	SelectFromT fromT;
	//这里的name 类是我封装好的javaBean类 为了匹配前台的参数 例如前台的参数名是username userpassword
	//那么username userpassword就是name类的属性  
	@RequestMapping(method=RequestMethod.POST)
	@ResponseBody
	public boolean servetGet(Name name,HttpServletRequest req,HttpServletResponse resp) {
		System.out.println("反正我执行了");
		String namString = fromT.selectInformation().getName();
		System.out.println(namString);
		if(namString.equals(name.getYourname()))
		{
			System.out.println("你猜");
			return true;
		}
		else {
			return false;
		}
		
	}
	@RequestMapping(method=RequestMethod.POST,value="/redirect")
	public String name() {
		return "hello";
		
	}
}

全部ok

项目结构如图:
springMVC 入门配置(方便我以后快速复习)_第1张图片

6.0 好了我们全部写完了 开始运行我们用Tomcat7

前台页面
springMVC 入门配置(方便我以后快速复习)_第2张图片

输入1 后 后台打印
springMVC 入门配置(方便我以后快速复习)_第3张图片

前台返回
springMVC 入门配置(方便我以后快速复习)_第4张图片

说明前后台 交互完成

你可能感兴趣的:(springMVC 入门配置(方便我以后快速复习))