SpringMVC&Mybatis暑期短学期说明


首先是目录的说明:

 

-config

-src

-WebRoot

 

Config:里面是SpringMVCMybatis的相关初始化设定,一般除了配置下自己电脑的数据库连接方式,不需要做额外设定。

 

config

-mybatis

-spring

-db.properties

-log4j.properties

 

所以,这里只需要对db.properties进行设置,我这里是postgres,所以设定如下:

 

jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/natsu
jdbc.username=postgres
jdbc.password=postgres


先不看src,里面当然就是java的源代码。

先看WebRoot文件夹,这个文件夹的内容,就会在tomcat上运行,包括java编译生成的class文件。


WebRoot

-data

-jquery-easyui-1.5.2

-js

-META-INF

-WEB-INF

-index.html


这里的目录是可以通过URL来直接访问和获取的,而WEB-INF的内容是被保护的,不可直接访问。

所以index.html可以直接通过地址栏里面输入网址来打开。(localhost:8080/工程路径/index.html)

 

然后为了方便起见,也就可以直接把所有的jsjsondata文件夹下),css放置在此,如果放置在WEB-INF下,需要再做别的设定,此处不赘述。


WEB-INF

-classes

-jsp

-lib

-web.xml

 

这里的WEB-INF已经是web应用编译后的了,所以存在class文件夹,自己只需要建立jsp文件夹,并且把通过.action来访问的页面放置在此即可,lib里面是相关的jar包,记得建立项目时均放置到其中,避免tomcat运行后,出现找不到jar包依赖的错误。

 

为什么.jsp的页面要放置在WebRoot/WEB-INT/jsp文件夹下,是因为在SpringMVC.xml下做了如下配置:

 

<!-- 视图解析器 解析jsp页面,默认使用jstl标签,classpath下面得有jstl的包 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<!-- 配置jsp路径的前后缀 -->
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
	</bean>


 

目录讲解到此,下面就是src的源代码目录。

 

-controller

-mapper

-po

-service

 

不管前面的包是怎么封的,不论如何,到最后一层都是这四个包:controllermapperposervice

先说popo内简单地说就是方便你来操作数据库的传参和返回值而封装的类,比如这里的Users。当然这里也可以自己建立一些类,目的就是为了方便别的代码的逻辑和编写。

 

public class Users {
	private int id; // 用户ID
	private String username;// 用户姓名
	private String password;// 用户密码

	public int getId() {
		return id;
	}

	...//get&set

	public void setPassword(String password) {
		this.password = password;
	}

}


关于这个po,有自动生成的工具,所以还算是挺方便的。

介绍完了po,下面我们就跟随一个实际需求,来看看整个运行流程。

 

出发点是位于user.jsp引用的mydemo.js的一段ajax请求:

 

$('#login').bind('click', function(){
    	$.ajax({
    		url: "./loginResult.action",
    		async: true,
    		type: "POST",
    		dataType: "text",//"json",
    		data: {
    			username: $("#username").textbox('getValue'),
    			password: $("#password").textbox('getValue')
    		},
    		success: function(result){
    			if(result=="success"){
    				$.messager.alert('提示','登陆成功');
    		        $('#loginWindow').window('close');
                    window.location.reload();
    			}
    			else if(result=="fail"){
    				$.messager.alert('提示',"用户名或者密码错误!");
    			}
    		}
    	})
    });


 

这里发送了usernamepassword给服务器,期望得到一个字符串的返回,来知道登录是否成功。

 

而请求的URL ./loginResult.action

 

服务器接到这个请求,当然就是去找对应的controller啦。

 

于是,就在controller里面找到了这货:

 

	@RequestMapping("/login")
	public ModelAndView login() throws Exception{
		ModelAndView modelAndView =  new ModelAndView();
		modelAndView.setViewName("index");
		
		return modelAndView;
	}
	@RequestMapping("/loginResult")
	@ResponseBody
	public String loginResult(Users user) throws Exception{
		Users usersResult = null;
		
		usersResult = usersService.findUser(user);
		
		if(usersResult!=null) return "success";
		return "fail";
	}

 

前面那个controller就是为了用于访问WEB-INF下的页面而书写的。

这边重点看后面这个,这里用了@ResponseBody注释,使得返回的字符串会直接写入response里面。

 

而这里,传入的usernamepassword会自动构成Users对象,而这里在Sercvice下写了个函数来实现返回查询结果,传入的正是User

 

那么再往下一层,我们前往Service

Service

-impl

-UsersService.java

 

public interface UsersService {
	public Users findUserById(int id) throws Exception;
	public Users findUser(Users user) throws Exception;
}


Service当中,只提供了接口,而实现在其Impl中。

 

public class UsersServiceImpl implements UsersService{

	@Autowired
	private UsersMapper usersMapper;

	@Override
	public Users findUser(Users user) throws Exception {
		Users users = usersMapper.findUser(user);
		return users;
	}

	@Override
	public Users findUserById(int id) throws Exception {
		Users users = usersMapper.findUsersById(id);
		return users;
	}
}


 

而这里可以看到,在@Override的重载代码里面,返回值users就是通过Mapper里面的函数获得的。

 

这里 usersMapper前面用了@Autowired自动装配,因为事实上,usersMapper也只是个接口,所以要配合它的.xml来完成代码。

 

mapper

-UsersMapper.java

-UsersMapper.xml


public interface UsersMapper {
	// 根据id查询用户信息
	public Users findUsersById(int id) throws Exception;
	// 根据账号密码查询用户
	public Users findUser(Users user) throws Exception;
}


而最后的最后,就是配置.xml里面对应的sql语句了:

 

<select id="findUser" parameterType="cn.edu.zju.gis.po.Users" resultType="cn.edu.zju.gis.po.Users">
		SELECT * FROM USERS WHERE username = #{username} and password = #{password}
	</select>

 

parameterType代表传入的类型 resultType是返回值类型。

 

这里在SQL中的传入参数用#{成员名}来书写即可。

 

最后配上一张流程图。

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值