注册jsp的Ajax代码
$(":text").blur(function () {
var username = $(this).val()
$.ajax({
url: '${path}/user?method=checkUserName',
data: {username: username},
type: 'post',
dataType: 'json',
success: function (res) {
var msg = res.msg
$("#msg").text(msg)
if(res.code==0){
$("#msg").css("color", "green");
}else if(res.code==500){
$("#msg").css("color", "red");
}
}
})
前面已经介绍过Ajax里参数的具体使用, 将checkUserName的方法路径传入,比较传入的code值回显出不同的提示信息。
servlet代码
protected void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
HashMap map = new HashMap<>();
SysUser sysUser = new SysUser();
sysUser.setUsername(username);
SysUser newUser = userService.findUserName(sysUser);
if (newUser == null&!"".equals(username)) {
map.put("code", 0);
map.put("msg", "用户名可用");
} else if(!"".equals(username)){
map.put("code", 500);
map.put("msg", "用户名已被占用");
}else{
map.put("msg", "");
}
ResponseUtil.write(resp,map);
}
调用userService中的findUserName方法,将注册输入的用户名传入,在数据库中寻找该用户名,如果找到则newUser已经存在,提示用户名已被占用,如果newUser为空则数据库中无该用户名,可以使用,这里非空输入才会提示用户名是否可用。
service代码
public class UserServiceImpl implements UserService {
private UserMapper userMapper = MapperUtil.getSqlSession().getMapper(UserMapper.class);
@Override
public SysUser findUserName(SysUser username) {
SysUser userName = userMapper.selectByUserName(username);
return userName;
}
}
通过获取userMapper代理对象调用selectByUserName方法,返回查找的用户名。
mapper.xml代码
Mybatis中所有数据库的操作都会基于该映射文件和配置的sql语句,在这个配置文件中可以配置任何类型的sql语句。框架会根据配置文件中的参数配置,完成对sql语句以及输入输出参数的映射配置。其中namespace为命名空间,填入的是UserMapper接口的全路径,id是UserMapper接口中的方法,resultType是返回的结果类型。
MapConfig.xml代码
该配置文件主要用于连接数据库,可以连接多个数据库,主要有以下的参数配置:
1.properties属性:用于指定外部配置文件的位置。
2.settings设置:mapUnderscoreToCamelCase设置是否开启自动驼峰命名规则映射。
3.typealises:类型别名,只和xml配置有关,用于减少类的完全限定名的冗余。
4.environments:可配置多个运行环境,default中为默认使用哪个数据库。
5.mappers:映射器,用来映射mapper.xml文件,有三种映射方式,图中为配置包名。
utils代码
package javaweb.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MapperUtil {
private MapperUtil(){}
private static SqlSessionFactory factory;
static {
InputStream resourceAsStream = null;
try {
resourceAsStream = Resources.getResourceAsStream("config/mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return factory.openSession(true);
}
}
mapperUtil用于加载config.xml文件,返回sql会话信息。
package javaweb.utils;
import cn.hutool.json.JSONUtil;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public final class ResponseUtil {
private ResponseUtil(){}
public static void write(HttpServletResponse response,Object object) throws IOException {
response.setContentType("application/json;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write(JSONUtil.toJsonStr(object));
writer.close();
}
}
ResponseUtil用于以json格式响应数据的写出。