![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java四阶段 - 框架
CV键都碎了
真·前端小垃圾,努力混饭的智障
展开
-
ajax上传文件
ajaxupload.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ajax提交文件</title> <script src="browser_components/jquery/dist/jquery.min.js"></script></head><body&g原创 2022-04-04 21:38:52 · 492 阅读 · 0 评论 -
表单文件上载
什么是文件上载文件上载是HTTP协议的扩展标准,具体标椎文件请参考《Form-based File Upload in HTML》https://tools.ietf.org/html/rfc1867,在这个标椎描述了在HTTP协议基础上如何进行文件上载的。Spring文件上载Spring提供了文件上载支持,SpringMVC可以自动解析文件上载请求,将解析完成的文件数据作为参数传递给控制器实现<!DOCTYPE html><html lang="en"&g..原创 2022-04-02 16:16:14 · 180 阅读 · 0 评论 -
什么是数据库事务
现在程序中存在一个严重的问题就是事务完整性的问题。要想理解这个问题我们得从什么是事务说起。数据库事务(简称事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。数据库事务拥有以下四个特性,被称为ACID特性。原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据满足完整性约束。隔离性(Isola原创 2022-04-02 11:15:12 · 5879 阅读 · 0 评论 -
UserDetailsService提供认证数据
实际开发中,用户认证数据储存在关系数据库等储存系统中,SpringSecurity提供了从其他储存中获取认证信息的接口UserDetailsService,实现这个接口提供用户信息就可以完成登录。@Componentpublic class UserDetailServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throw原创 2022-02-09 14:09:26 · 1187 阅读 · 0 评论 -
权限控制资源
什么是权限控制网站中有很多资源不仅需要登录才能查看,更需要用户满足一定权限才能查看,比如学生才能发表提问,老师才能访问回答问题功能。Spring-Security提供了权限控制方法。应用首先将配置文件SecurityConfig继承WenSecurityConfigurerAdapter,在类中重写configure方法,在方法中利用inMemoryAuthentication()创建临时测试用户Tom,分配密码123456,分配测试权限@Configuration//开启权限分配..原创 2022-02-09 10:17:35 · 1880 阅读 · 0 评论 -
密码加密(必须用密文储存密码)
加密流程密码不可逆算法,无法计算出明文。配置方法@Configurationpublic class SecurityConfig { @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); }}此处注释的为密码加密器,加入{bcrypt}可以不配置BCryptPasswordEncoder()为Spring提供好的..原创 2022-02-08 19:00:38 · 2622 阅读 · 0 评论 -
SpringSecurity
什么是Spring-SecuritySpring提供的安全管理框架。开发Web应用的时候,对页面的安全控制是必须的。比如:对于有访问权限的用户允许访问,没有访问权限的用户需要跳转登录表单界面。添加pom坐标<!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <a..原创 2022-02-08 18:03:14 · 1906 阅读 · 0 评论 -
MyBaitsPlus代码生成器测试
考入的代码添加测试类@SpringBootTestclass StrawPortalApplicationTests { @Autowired UserMapper userMapper; @Test void contextLoads() { } @Test public void testUserMapper(){ User user = userMapper.selectById(1); System原创 2022-02-08 16:27:38 · 69 阅读 · 0 评论 -
MyBaitsPlus代码生成器
什么是代码生成器之前的案例中,最繁琐的步骤就是实体类User的编写,对于实体类以后Mapper接口的编写,MybatisPlus提供了代码生成器。父级项目straw中pom.xml中添加依赖配置。 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifa..原创 2022-02-08 16:10:54 · 570 阅读 · 0 评论 -
MyBatisPlus
什么是MyBatisPlus简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强,不做改变,简化开发,提升效率。导入pom坐标<properties> <java.version>1.8</java.version> <mybatis.plus.version>3.3.1</mybatis.plus.version> </properties> &..原创 2022-02-08 14:37:50 · 166 阅读 · 0 评论 -
使用Lombok简化开发
什么是LombokLombok是一个java库,可以自动插入到你的编辑器和构建工具中,让java变得简单。再也不用写getter或equals方法。安装files —— settings —— plugins搜索不出来关闭防火墙安装后再pom文件加入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId&g..原创 2022-02-07 16:39:14 · 195 阅读 · 0 评论 -
AJAX概述
什么是AJAXAJAX即Asynchronous JavaScript and XML。目前广泛采用的浏览器和服务器直接的交互编程方式。核心特点浏览器和服务器进行少量数据异步通信。对html进行布局刷新。3.优点- 节省浏览- 提高浏览器访问性能- 返回JSON数据格式...原创 2022-02-07 09:09:37 · 371 阅读 · 0 评论 -
SpringBoot插入数据
创建实体类public class User implements Serializable { private Integer empno; private String ename; private String job; private Integer mgr; private String hiredate; private Double sal; private Double comm; private Integer dep.原创 2022-02-06 01:13:02 · 1305 阅读 · 0 评论 -
MyBatisStarter在SpringBoot中用Mybatis链接数据库
首先在SpringBoot程序中插入坐标 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <dependency> .原创 2022-02-06 01:09:14 · 131 阅读 · 0 评论 -
第一个SpringBoot_HelloWorld程序
文件结构application.propertiesserver.port=9999DemoController.java@RestControllerpublic class DemoController { @GetMapping("/hello") public String demo(){ return "Hello World"; }}运行后访问localhost:9999/hello原创 2022-02-05 23:46:22 · 158 阅读 · 0 评论 -
IDEA导入SpringBoot项目找不到或无法加载主类
从SpringBoot官网上配置下载SpringBoot模板导入时启动找不到主类,试过从新编译,从新导入依赖都不行。解决办法:导入时选择maven原Po: 原文章解决办法转载 2022-02-05 23:15:41 · 317 阅读 · 0 评论 -
关联数据查询
数据库中的表经常有业务关联关系。实例UserVO.java 定义参数,添加getset方法和tostring方法public class UserVO implements Serializable { private int empno; private String ename; private String dname;}UserMapper.xml 定义sql语句<select id="findUserDepartment" resultType=原创 2022-02-03 23:03:29 · 694 阅读 · 0 评论 -
动态sql查询
什么是动态参数查询在应用中经常有多参数查询的情况,比如:程序UserMapper.javaList<User> findUserByParams( @Param("ename") String ename, @Param("sal") Double sal, @Param("deptno") Integer deptno );声明条件,通过这三个条件进行查询写入sql语句<se..原创 2022-02-03 20:21:15 · 1821 阅读 · 0 评论 -
动态SQL-if
UserMapper.xml<update id="updateUserInfo" parameterType="cn.tedu.entity.User"> update emp <set> <if test="sal != 1250"> sal = #{sal}, </if> <if test="sal != nu.原创 2022-02-02 22:24:35 · 387 阅读 · 0 评论 -
显示SQL
MyBatis提供了显示动态生成sql功能,利用这个功能可以查看SQL,分析问题原因,甚至优化查询性能。<!-- 显示日志文件--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <原创 2022-02-02 22:17:49 · 378 阅读 · 0 评论 -
动态SQL_foreach
什么是动态SQL根据调用方法是给的参数不同,最终生成的SQL语句也不同。删除案例传入多个id,通过多个id同时删除数据。批量删除文件结构UserMapper接口中加入方法Integer deleteByIds(Integer... ids);UserMapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0.原创 2022-02-01 23:31:21 · 2449 阅读 · 0 评论 -
可变参数计算和
可以传递多个参数,int…若干个int类型参数public static void sum(int... numbers){ int result = 0; for (int i = 0;i < numbers.length; i++){ result += numbers[i]; } System.out.println(result); } @Test public void tes原创 2022-02-01 22:40:16 · 304 阅读 · 0 评论 -
xml映射(利用映射完成helloworld)
什么是xml映射MyBatis提供了注解定义SQL与Mapper接口的映射关系。但是注解不能解决复杂的映射关系,例如sql拼接,所以需要使用xml映射。helloWorld程序文件结构someMapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/..原创 2022-02-01 22:23:56 · 691 阅读 · 0 评论 -
Mybatis删除操作
@Delete("delete from emp where empno=#{empno}") Integer deleteUserById(int empno); @Test public void testDeleteUserById(){ UserMapper mapper = ctx.getBean("userMapper",UserMapper.class); Integer n = mapper.deleteUserById(13...原创 2022-02-01 03:20:51 · 254 阅读 · 0 评论 -
Mybatis更新(修改数据操作)
多个获取多项进行修改UserMapper.java @Select("select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where empno=#{empno}") User findUserById(Integer empno); @Update("update emp set ename=#{ename},job=#{job},mgr=#{mgr}," + "hiredate=#{hireda原创 2022-02-01 03:14:39 · 933 阅读 · 0 评论 -
Mybaits插入操作
@Insert("insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) " + "values (#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})") @Options(useGeneratedKeys = true, keyProperty = "empno") Integer insertUser(Use.原创 2022-02-01 02:50:16 · 223 阅读 · 0 评论 -
SpringMVC多行查询
定义集合存储查询信息@Select("select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp") List<User> findAllUser();获得集合,lambda表达式 @Test public void testFindAllUser(){ UserMapper mapper = ctx.getBean("userMapper", UserMapper.class);原创 2022-01-30 20:37:07 · 1889 阅读 · 0 评论 -
利用Mybatis实现数据表查询操作
首先根据数据表定义实体类实体类,添加无参构造,有参构造,getter setter, toString, equals hashCode 方法。public class User implements Serializable { private Integer empno; private String ename; private String job; private Integer mgr; private String hiredate; p原创 2022-01-30 20:21:59 · 460 阅读 · 0 评论 -
MyBatis创建HelloWorld程序
首先创建数据库访问接口DemoMapper,MyBatis会自动的创建这个接口的具体子类实例,利用这个实例就可以访问数据库了。DemoMapper接口public interface DemoMapper { @Select("select 'Hello world'") String hello();}select用来声明sql语句MyBatisConfig.java@MapperScan("cn.tedu.mapper")public class MyBatisC.原创 2022-01-27 22:52:01 · 88 阅读 · 0 评论 -
第一个Mybatis程序
什么是MyBatisMyBatis框架可以简化数据库编程,MyBaits底层封装的事JDBC,使用起来比JDBC大大简化。导入SSM组件在Maven中导入<!-- Mybatis框架 --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.0</..原创 2022-01-27 20:42:08 · 49 阅读 · 0 评论 -
拦截器和过滤器的区别
都可以作用于HTTP请求,在这些路径请求被处理时,都会经过检查,最终决定放行或阻止。都可以配置多个形成调用"链条"。这是相似性不同点:过滤器,也称为Servlet过滤器是Servlet的一部分。可以拦截任意Http请求。如,拦截对Servlet请求,拦截对html请求,拦截对png请求。拦截器,是SpringMVC提供的功能,它工作在DispatcherServlet内部,拦截控制器请求。...原创 2022-01-26 01:44:52 · 386 阅读 · 0 评论 -
拦截器配置
上述只能拦截一个URL,如果有一组都需要拦截,就可在SpringMVC配置类中对拦截器所映射的路径进行详细配置。也可以使用通配符可以添加例外registry.addInterceptor(new AccessInterceptor()).addPathPatterns( "/home/*", "/user/*", "/blog/**").excludePathPatterns(原创 2022-01-26 01:36:18 · 494 阅读 · 0 评论 -
权限拦截器
判断是否登录,登录则放行。没登录则重定向登录界面。创建拦截器AccessInterceptor.javapublic class AccessInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {原创 2022-01-26 01:25:28 · 350 阅读 · 0 评论 -
拦截器在SpringMvc中的应用
什么是拦截器拦截器(Interceptor)是SpringMVC中的组件。可以使很多个请求被处理时,都会执行拦截器中的代码。拦截器可以选择阻止执行或放行。举个栗子:基本使用在SpringMVC中实现HandlerInteceptor拦截器接口,这个类就是一个拦截器类。利用拦截器最核心的在用控制preHandle方法的返回值,返回true就成功了,返回false就表示进行拦截处理了。实例首先,创建一个类继承拦截器public class DemoIntercept..原创 2022-01-26 00:59:24 · 307 阅读 · 0 评论 -
Session在SpringMVC中的应用
什么是Session服务器为了保存用户状态而创建的一个特殊对象。当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。使用SessionSpringMVC对Session提供了封装,设计了简单方式访问Session对象。控制器方法定义Ht..原创 2022-01-26 00:14:30 · 685 阅读 · 0 评论 -
转发和重定向
什么是转发转发是服务器内部的控制器类和视图协作完成同一项任务。之前的案例有handleLogin处理业务,结果发送到视图massage.html并显示,这个就是转发。什么是重定向重定向时http提供的功能,客户端请求服务器,服务器响应窗台吗码“302”,并提供目标URL地址,浏览器收到302和URL地址后,立即向新URL发送请求。本质就是浏览器根据一次请求结果向新的URL发起二次请求。使用重定向当控制器业务处理完成,希望跳到其他http请求就可使用重定向功能。比如,网站登录成功后往.原创 2022-01-25 23:50:41 · 660 阅读 · 0 评论 -
ModelMap传递数据(简洁)
@RestController@RequestMapping("/user")public class UserController { @GetMapping("/login.do") public ModelAndView login(){ System.out.println("显示登录界面"); return new ModelAndView("login"); } @PostMapping("handle_login")原创 2022-01-25 20:04:56 · 531 阅读 · 0 评论 -
ModelAndView传递数据(繁琐,不推荐使用)
文件结构实现代码usercontroller.java@RestController@RequestMapping("/user")public class UserController { @GetMapping("/login.do") public ModelAndView login(){ System.out.println("显示登录界面"); return new ModelAndView("login"); } .原创 2022-01-25 19:40:42 · 820 阅读 · 0 评论 -
接收get请求参数
Get请求就是URL请求。@GetMapping("/get.do") public String get(String id){ System.out.println("id"+id); return "OK"; }请求参数id=8888http://localhost:8080/SpringMVC_S_war/user/get.do?id=8888原创 2022-01-23 23:15:47 · 437 阅读 · 0 评论 -
控制器接收表达数据
使用控制器方法接收表单实现reg.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注册</title></head><body> <h1>注册</h1> <form method="post" action="handle_reg.do".原创 2022-01-23 22:48:08 · 256 阅读 · 0 评论