MyServlet06.java
public class MyServlet06 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取url-path
String path = request.getServletPath();
if("/student/save.do".equals(path)){
save(request,response);
}else if("/student/update.do".equals(path)){
update(request,response);
}else if("/student/delete.do".equals(path)){
delete(request,response);
}else if("/student/select.do".equals(path)){
select(request,response);
}
}
public void save(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行了保存操作");
}
public void update(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行了修改操作");
}
public void delete(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行了删除操作");
}
public void select(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行了查询操作");
}
}
web.xml
<servlet>
<servlet-name>MyServlet06</servlet-name>
<servlet-class>com.myfdc.servlet.MyServlet06</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet06</servlet-name>
<url-pattern>/student/save.do</url-pattern>
<url-pattern>/student/update.do</url-pattern>
<url-pattern>/student/delete.do</url-pattern>
<url-pattern>/student/select.do</url-pattern>
</servlet-mapping>
页面
<a href="student/save.do">添加操作</a><br/><br/>
<a href="student/update.do">修改操作</a><br/><br/>
<a href="student/delete.do">删除操作</a><br/><br/>
<a href="student/select.do">查询操作</a><br/><br/>
元素 作用 备注
if 判断语句 单条件分支
choose(when、otherwise) 相当于 Java 中的 if else 多条件分支
trim(where、set) 辅助元素 用于处理 SQL 拼接问题
foreach 循环语句 批量插入, 更新, 查询时经常用到
bind 创建一个变量, 并绑定到上下文中 用于兼容不同的数据库, 防止 SQL 注入等
详细使用在我的这篇文章中,里面的案例仅为介绍动态SQL:mysql的使用以及mybatis中的SQL语句
PageResult
Result
StatusCode
/**
* 分页结果类
*/
public class PageResult<T> {
private Long total;//总记录数
private List<T> rows;//记录
public PageResult(Long total, List<T> rows) {
this.total = total;
this.rows = rows;
}
public PageResult() {
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}
public class Result<T> implements Serializable {
private boolean flag;//是否成功
private Integer code;//返回码
private String message;//返回消息
private T data;//返回数据
public Result(boolean flag, Integer code, String message, Object data) {
this.flag = flag;
this.code = code;
this.message = message;
this.data = (T) data;
}
public Result(boolean flag, Integer code, String message) {
this.flag = flag;
this.code = code;
this.message = message;
}
public Result() {
this.flag = true;
this.code = StatusCode.OK;
this.message = "操作成功!";
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
/**
* 返回状态码
*/
public class StatusCode {
public static final int OK = 20000;//成功
public static final int ERROR = 20001;//失败
public static final int LOGINERROR = 20002;//用户名或密码错误
public static final int ACCESSERROR = 20003;//权限不足
public static final int REMOTEERROR = 20004;//远程调用失败
public static final int REPERROR = 20005;//重复操作
public static final int NOTFOUNDERROR = 20006;//没有对应的抢购数据
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>测试模态框2</title>
<!-- 模态框只用这三个-->
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<h1>使用js函数控制</h1>
<h2>模态框(Modal)插件事件</h2>
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
新增
</button>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×
</button>
<h4 class="modal-title" id="myModalLabel">
新增商家类型
</h4>
</div>
<div class="modal-body">
商家类型:
<input type="text" name="shopName" value="请输入……">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
关闭
</button>
<button type="button" class="btn btn-primary">
提交更改
</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal1">
修改
</button>
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×
</button>
<h4 class="modal-title" id="myModalLabel1">
修改商家类型
</h4>
</div>
<div class="modal-body">
商家类型:
<input type="text" name="shopName" value="请输入……">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
关闭
</button>
<button type="button" class="btn btn-primary">
提交更改
</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
$(function () { $('#myModal').modal('hide')});
// 和上面的一样 商家类型 新增
// $("#myModal").modal('hide')
// myModal1
$(function () { $('#myModal1').modal('hide')});
</script>
</body>
<script>
</script>
</html>
分层开发
数据持久层dao:只做对数据库的操作,返回数据或结果
业务逻辑层service:主要做业务逻辑处理,不做任何数据库操作,只做业务逻辑处理
控制层controller:接受和响应前端请求
pojo(domain):实体类对应数据库的表
entity:存放特殊用途的实体类,返回值实体类的封装,常量封装,枚举等
dto:发送给前端的实体类
vo:实体类,存放接受前端用户发送的实体类
注解其实就是通过spring容器创建对象
@Autowired :spring 提供
private UserService userService = new UserServiceImpl()
@Resource :等同于@AUtowired jdk提供
@Controller:声明控制器
@RestController 标识当前类是Controller
并且返回的数据类型都是 responseBody json对象
@RequestMapping 标注该类或方法的URL访问路径
@Service 标识该类是业务逻辑层,交给spring容器管理
@SpringBooyApplication 启动类
@MapperScan mybatis提供的dao层扫描接口(不写MapperScan的话在dao层写下面的俩个)
@Mapper 标示该类是数据持久层
@Repository
以上会满足日常开发,其他的注解比较零碎,根据情况选择是否使用
先学java基础
mysql
JDBC(可以琢磨一下,也可跳过)
javaWeb(jsp和servlet了解原理即可,servlet为后续springmvc做铺垫,jsp为数据交互做铺垫)
springboot路线
spring-----IOC
mybatis----crud
springMVC
mybatisplus
springboot
springboot整合各种框架
学习微服务