回顾以前的代码经历

2023-10-17 08:21:48 浏览数 (1)

1、Servlet模板模式的应用

MyServlet06.java

代码语言:javascript复制
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

代码语言:javascript复制
<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>

页面

代码语言:javascript复制
<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/>
2、mybatis的动态SQL
代码语言:javascript复制
元素					   作用					备注
if						 判断语句				单条件分支
choose(when、otherwise)	相当于 Java 中的 if else	多条件分支
trim(where、set)			辅助元素			用于处理 SQL 拼接问题
foreach					 循环语句	批量插入, 更新, 查询时经常用到
bind					 创建一个变量, 并绑定到上下文中	用于兼容不同的数据库, 防止 SQL 注入等

详细使用在我的这篇文章中,里面的案例仅为介绍动态SQL:mysql的使用以及mybatis中的SQL语句

3、常用封装实体类
代码语言:javascript复制
PageResult
Result
StatusCode
代码语言:javascript复制
/**
 * 分页结果类
 */
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;
    }
}
代码语言:javascript复制
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;
    }
}
代码语言:javascript复制
/**
 * 返回状态码
 */
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;//没有对应的抢购数据
}
4、模态框
代码语言:javascript复制
<!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>
附录
1、包名设计
代码语言:javascript复制
分层开发
	数据持久层dao:只做对数据库的操作,返回数据或结果  
	业务逻辑层service:主要做业务逻辑处理,不做任何数据库操作,只做业务逻辑处理
	控制层controller:接受和响应前端请求
	pojo(domain):实体类对应数据库的表
	entity:存放特殊用途的实体类,返回值实体类的封装,常量封装,枚举等
	dto:发送给前端的实体类
	vo:实体类,存放接受前端用户发送的实体类
2、springboot注解
代码语言:javascript复制
注解其实就是通过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

以上会满足日常开发,其他的注解比较零碎,根据情况选择是否使用
3、学习路线
代码语言:javascript复制
先学java基础
mysql
JDBC(可以琢磨一下,也可跳过)
javaWeb(jsp和servlet了解原理即可,servlet为后续springmvc做铺垫,jsp为数据交互做铺垫)
springboot路线
	spring-----IOC
	mybatis----crud
	springMVC
	mybatisplus
	springboot
	springboot整合各种框架
	学习微服务

0 人点赞