springweb和其他的先提前配置好,在maven项目中springweb创建看web项目搭建
项目结构:
分层思想(解耦:高内聚低耦合) controller层 1.接收请求 2.(调用service层,返回结果)响应结果 service层 业务逻辑判断 mapper 1.接口类 2.mapper.xml mybatis与数据库的相关操作 entity (po、model) JavaBean实体 util 工具类(通用的方法/类) test 测试类/方法 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ controller层(接收请求、响应结果) 1.接收客户端的请求(接收参数:姓名、密码)2.调用service层的方法,返回消息模型对象3.判断消息模型的状态码 如果状态码是失败 将消息模型对象设置到request作用域中,请求转发跳转到login.jsp如果状态码是成功 将消息模型中的用户信息设置到session作用域中,重定向跳转到index.jspl service层(业务逻辑) 1.参数的非空判断 如果参数为空 将状态码、提示信息、回显数据设置到消息模型对象中,返回消息模型对象 2.调用dao层的查询方法,通过用户名查询用户对象 3.判断用户对象是否为空 如果为空,将状态码、提示信息、回显数据设置到消息模型对象中,返回消息模型对象 4.判断数据库中查询到的用户密码与前台传递过来的密码作比较 如果不相等,将状态码、提示信息、回显数据设置到消息模型对象中,返回消息模型对象 5.登录成功,成功状态、提示信息、用户对象设置消息模型对象,并return mapper层(Dao层) 定义对应的接口 application.properties
# 配置端口号
server.port=8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shequbianmin?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
#jsp加载路径 根据自己jsp存放地址设置
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
server.servlet.jsp.registered=true
# 配置mapper扫描路径
mybatis-plus.mapper-locations= classpath*:/mapper/**/*.xml
#mybatis日志 控制台显示sql语句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
MSG为统一返回类
public class MSG {
@ApiModelProperty(value = "是否成功")
private Boolean success;
@ApiModelProperty(value = "返回码")
private Integer code;
@ApiModelProperty(value = "返回消息")
private String message;
@ApiModelProperty(value = "返回数据")
private Map<String,Object> data=new HashMap<String,Object>();
// 构造私有 为了防止别人在别的类中创建该对象
private MSG(){}
// 执行成功返回的数据
public static MSG success(){
MSG r = new MSG(); // 创建自身对象,进行返回
r.setCode(ResultCode.SUCCESS);//ResultCode.SUCCESS=20000
r.setSuccess(true);
r.setMessage("成功");
return r;
}
// 执行失败返回的数据
public static MSG error(){
MSG r = new MSG();
r.setCode(ResultCode.ERROR);//ResultCode.ERROR=20001
r.setSuccess(false);
r.setMessage("失败");
return r;
}
// 单独设置返回的状态值
public MSG success(Boolean success){
this.setSuccess(success);
return this;
}
// 单独设置返回的提示信息
public MSG message(String message){
this.setMessage(message);
return this;
}
// 单独设置返回的状态码
public MSG code(Integer code){
this.setCode(code);
return this;
}
// 封装数据 key:键 value:值
public MSG data(String key, Object value){
// 存储在map集合中
this.data.put(key, value);
return this;
}
public MSG data(Map<String, Object> map){
this.setData(map);
return this;
}
Controller层
service层