23.Spring练习(spring、springMVC)
目录
一、Spring练习环境搭建。
(1)设置服务器启动的展示页面。
(2)创建工程步骤。
(3)applicationContext.xml配置文件。
(4)spring-mvc.xml配置文件。
(5)web.xml配置文件。
(6)jdbc.properties配置文件。
(7)log4j.properties配置文件。
二、SSM项目结构。
(1)conctroller层。
(1.1)RoleController类。
(1.2)UserController类。
(1.3)jsp文件的部分截取参考。
(2)service层。
(2.1)RoleService接口与RoleServiceImpl类。
(2.2)UserService接口与UserService类。
(3)dao层。
(3.1)RoleDao接口与RoleDaoImpl类。
(3.2)UserDao接口与UserDaoImpl类。
(4)domain:存放POJO类。
(4.1)Role类。
(4.2) User类。
(5)utils:存放工具类。
(6)interceptor:拦截器。
三、SpringMVC的视图解析器的前缀后缀添加规则:
四、业务功能实现步骤。
一、Spring练习环境搭建。
(1)设置服务器启动的展示页面。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主页</title>
</head>
<body><%response.sendRedirect(request.getContextPath()+"/pages/main.jsp");%>
</body>
</html>
(2)创建工程步骤。
IDEA项目右键->新建->新模块 ->选择Maven->选择骨架或不选->next->命名->把项目缺少的文件添加上去。
(3)applicationContext.xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--1、加载jdbc.properties文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--2、配置数据源对象--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.Driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.user}"/><property name="password" value="${jdbc.password}"/></bean><!--3、配置JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/></bean><!--配置RoleService--><bean id="roleService" class="service.impl.RoleServiceImpl"><property name="roleDao" ref="roleDao"/></bean><!--配置RoleDao--><bean id="roleDao" class="dao.impl.RoleDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean><!--配置UserService--><bean id="userService" class="service.impl.UserServiceImpl"><property name="userDao" ref="userDao"/><property name="roleDao" ref="roleDao"/></bean><!--配置UserDao--><bean id="userDao" class="dao.impl.UserDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean></beans>
(4)spring-mvc.xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--1、mvc的注解驱动--><mvc:annotation-driven/><!--2、配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/pages/"/><property name="suffix" value=".jsp"/></bean><!--3、静态资源权限开放--><mvc:default-servlet-handler/><!--4、组件扫描--><context:component-scan base-package="controller"/><!--5、拦截器配置--><mvc:interceptors><mvc:interceptor><!--配置对哪些资源执行操作--><mvc:mapping path="/**"/><!--配置哪些资源排除拦截操作--><mvc:exclude-mapping path="/user/login"/><bean class="interceptor.PrivilegeInterceptor"/></mvc:interceptor></mvc:interceptors>
</beans>
(5)web.xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--Spring监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--Spring监听器的全局的初始化参数--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--SpringMVC的前端控制器--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><!--表示服务器启动就创建--></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
(6)jdbc.properties配置文件。
jdbc.Driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
jdbc.user=root
jdbc.password=root
注意:url中的 ?后面是防止乱码的方法之一。
(7)log4j.properties配置文件。
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout
二、SSM项目结构。
(1)conctroller层。
(1.1)RoleController类。
package controller;
@Controller
@RequestMapping("/role")
public class RoleController {@Resource(name = "roleService")private RoleService roleService;@RequestMapping("/list")public ModelAndView list(){ModelAndView modelAndView = new ModelAndView();List<Role> roleList = roleService.list();//设置模型modelAndView.addObject("roleList",roleList);//设置视图modelAndView.setViewName("role-list");return modelAndView;}@RequestMapping("/save")//参数是用来接收表单数据public String save(Role role){roleService.save(role);return "redirect:/role/list";}
}
(1.2)UserController类。
package controller;
@Controller
@RequestMapping("/user")
public class UserController {@Resource(name = "userService")private UserService userService;@Autowiredprivate RoleService roleService;@RequestMapping("/list")public ModelAndView list(){ModelAndView modelAndView = new ModelAndView();List<User> userList = userService.list();modelAndView.addObject("userList",userList);modelAndView.setViewName("user-list");return modelAndView;}@RequestMapping("/saveUI")public ModelAndView saveUI(){ModelAndView modelAndView = new ModelAndView();List<Role> roleList = roleService.list();modelAndView.addObject("roleService",roleList);modelAndView.setViewName("user-add");return modelAndView;}@RequestMapping("/save")public String save(User user,Long[] roleIds){userService.save(user,roleIds);return "redirect:/user/list";}@RequestMapping("/del/{userId}")//Restful风格public String del(@PathVariable(name = "userId") Long userId){userService.del(userId);return "redirect:/user/list";}@RequestMapping("/login")public String login(String username, String password, HttpSession session){User user = userService.login(username,password);if (user != null){//登录成功,将user存储到sessionsession.setAttribute("user",user);return "redirect:/index.jsp";}return "redirect:/login.jsp";}
}
(1.3)jsp文件的部分截取参考。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<tbody><c:forEach items="${roleList}" var="role"><tr><td><input name="ids" type="checkbox"></td><td>${role.id}</td><td>${role.roleName}</td><td>${role.roleDesc}</td><td class="text-center"><a href="#" class="btn bg-olive btn-xs">删除</a></td></tr></c:forEach>
</tbody>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="col-md-10 data"><c:forEach items="${roleService}" var="role"><input type="checkbox" name="roleIds" value="${role.id}">${role.roleName}</c:forEach>
</div>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<script>function delUser(userId) {if (confirm("您确认要删除吗?")){location.href="${pageContext.request.contextPath}/user/del/"+userId;}}
</script>
<tbody><c:forEach items="${userList}" var="user"><tr><td><input name="ids" type="checkbox"></td><td>${user.id}</td><td>${user.username}</td><td>${user.email}</td><td>${user.phoneNum}</td><td class="text-center"><c:forEach items="${user.roles}" var="role"> ${role.roleDesc}</c:forEach></td><td class="text-center"><a href="javascript:void(0);" onclick="delUser('${user.id}')" class="btn bg-olive btn-xs">删除</a></td></tr></c:forEach>
</tbody>
(2)service层。
(2.1)RoleService接口与RoleServiceImpl类。
package service;
import domain.Role;
import java.util.List;
public interface RoleService {public void save(Role role);public List<Role> list();
}
package service.impl;
public class RoleServiceImpl implements RoleService {private RoleDao roleDao;public void setRoleDao(RoleDao roleDao) {this.roleDao = roleDao;}@Overridepublic List<Role> list() {List<Role> roleList = roleDao.findAll();return roleList;}@Overridepublic void save(Role role) {roleDao.save(role);}
}
(2.2)UserService接口与UserService类。
package service;
public interface UserService {public List<User> list();void save(User user, Long[] roleIds);void del(Long userId);User login(String username, String password);
}
package service.impl;
public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}private RoleDao roleDao;public void setRoleDao(RoleDao roleDao) {this.roleDao = roleDao;}@Overridepublic List<User> list() {List<User> userList = userDao.findAll();//封装userList中的每一个User的roles数据for (User user : userList) {//获得user的idLong id = user.getId();//将id作为参数,查询当前userId对应的Role集合数据List<Role> roles = roleDao.findRoleById(id);user.setRoles(roles);}return userList;}@Overridepublic void save(User user, Long[] roleIds) {//第一步:向sys_user表中存储数据Long userId = userDao.save(user);//第二步:向sys_user_role关系表中存储数据userDao.saveUserRoleRel(userId,roleIds);}@Overridepublic void del(Long userId) {//1、删除sys_user_role关系表(userId数据)userDao.delUserRoleRel(userId);//2、删除sys_user表(userId数据)userDao.del(userId);}@Overridepublic User login(String username, String password) {try {User user = userDao.findByUsernameAndPassword(username,password);return user;}catch (EmptyResultDataAccessException e){//如果有这个异常,说明搜索后的结果为空return null;}}
}
(3)dao层。
(3.1)RoleDao接口与RoleDaoImpl类。
package dao;
public interface RoleDao {public void save(Role role);public List<Role> findAll();List<Role> findRoleById(Long id);
}
package dao.impl;
public class RoleDaoImpl implements RoleDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic List<Role> findAll() {List<Role> roleList = jdbcTemplate.query("select * from sys_role", new BeanPropertyRowMapper<Role>(Role.class));return roleList;}@Overridepublic void save(Role role) {jdbcTemplate.update("insert into sys_role values(?,?,?)",null,role.getRoleName(),role.getRoleDesc());}@Overridepublic List<Role> findRoleById(Long id) {//其实就是ur表的每一个roleId把r表全部查找一遍,把ur.roleId = r.id并且ur.userId = ?的结果就是满足条件的List<Role> roles = jdbcTemplate.query("select * from sys_user_role ur,sys_role r where ur.roleId = r.id and ur.userId = ?", new BeanPropertyRowMapper<>(Role.class), id);return roles;}
}
(3.2)UserDao接口与UserDaoImpl类。
package dao;
public interface UserDao {List<User> findAll();Long save(User user);void saveUserRoleRel(Long id, Long[] roleIds);void delUserRoleRel(Long userId);void del(Long userId);User findByUsernameAndPassword(String username, String password);
}
package dao.impl;
public class UserDaoImpl implements UserDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic List<User> findAll() {List<User> userList = jdbcTemplate.query("select * from sys_user",new BeanPropertyRowMapper<>(User.class));return userList;}@Override//里面有,获取数据表的主键id的方式public Long save(User user) {//创建PreparedStatementCreatorPreparedStatementCreator creator = new PreparedStatementCreator() {@Overridepublic PreparedStatement createPreparedStatement(Connection connection) throws SQLException {//使用原始jdbc完成有个PreparedStatement的组件PreparedStatement preparedStatement = connection.prepareStatement("insert into sys_user values(?,?,?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS);//PreparedStatement.RETURN_GENERATED_KEYS,就是1的意思,也可以写1preparedStatement.setObject(1,null);preparedStatement.setString(2,user.getUsername());preparedStatement.setString(3,user.getEmail());preparedStatement.setString(4,user.getPassword());preparedStatement.setString(5,user.getPhoneNum());return preparedStatement;}};//创建keyHolder,获取自增主键idGeneratedKeyHolder keyHolder = new GeneratedKeyHolder();jdbcTemplate.update(creator, keyHolder);//获取生成的主键long userId = keyHolder.getKey().longValue();//不能获取主键的方式//jdbcTemplate.update("insert into sys_user values(?,?,?,?,?)",null,user.getUsername(),user.getEmail(),user.getPassword(),user.getPhoneNum());return userId; //返回当前保存用户的id,该id是数据库自动生成的}@Overridepublic void saveUserRoleRel(Long userId, Long[] roleIds) {for (Long roleId : roleIds) {jdbcTemplate.update("insert into sys_user_role values(?,?)",userId,roleId);}}@Overridepublic void delUserRoleRel(Long userId) {jdbcTemplate.update("delete from sys_user_role where userId = ?",userId);}@Overridepublic void del(Long userId) {jdbcTemplate.update("delete from sys_user where id = ?",userId);}@Overridepublic User findByUsernameAndPassword(String username, String password) throws EmptyResultDataAccessException {User user = jdbcTemplate.queryForObject("select * from sys_user where username = ? and password = ?", new BeanPropertyRowMapper<>(User.class), username, password);return user;}
}
(4)domain:存放POJO类。
(4.1)Role类。
package domain;
public class Role {private Long id;private String roleName;private String roleDesc;public Long getId() {return id; }public void setId(Long id) {this.id = id; }public String getRoleName() { return roleName;}public void setRoleName(String roleName) { this.roleName = roleName;}public String getRoleDesc() { return roleDesc;}public void setRoleDesc(String roleDesc) { this.roleDesc = roleDesc;}@Overridepublic String toString() {return "Role{" +"id=" + id +", roleName='" + roleName + '\'' +", roleDesc='" + roleDesc + '\'' +'}';}
}
(4.2) User类。
package domain;
import java.util.List;
public class User {private Long id;private String username;private String email;private String password;private String phoneNum;//当前用户具备哪些角色private List<Role> roles;public List<Role> getRoles() { return roles; }public void setRoles(List<Role> roles) {this.roles = roles; }public Long getId() { return id; }public void setId(Long id) { this.id = id; }public String getUsername() { return username; }public void setUsername(String username) { this.username = username; }public String getEmail() { return email; }public void setEmail(String email) { this.email = email; }public String getPassword() { return password; }public void setPassword(String password) { this.password = password; }public String getPhoneNum() { return phoneNum; }public void setPhoneNum(String phoneNum) { this.phoneNum = phoneNum; }@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", email='" + email + '\'' +", password='" + password + '\'' +", phoneNum='" + phoneNum + '\'' +'}';}}
(5)utils:存放工具类。
(6)interceptor:拦截器。
package interceptor;
public class PrivilegeInterceptor implements HandlerInterceptor {//这里不需要重写三个,因为只需要用到一个,不用到(不写操作的方法)的就不重写@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//逻辑:判断用户是否登录,本质:判断session中有没有userHttpSession session = request.getSession();User user = (User) session.getAttribute("user");if (user == null){//没有登录,重定向和转发都可以//request.getRequestDispatcher("/login.jsp").forward(request,response);//可以返回trueresponse.sendRedirect(request.getContextPath()+"/login.jsp");//重定向后不能返回truereturn false;}return true;//放行,访问目标资源}
}
三、SpringMVC的视图解析器的前缀后缀添加规则:
@RequestMapping("/quick")public String quick(){* 总结:forward: 或 redirect:* 如果加了上面中的一个,那么视图解析器配置的 前缀后缀将不在添加//1. 文.件[/pages/quick.html.jsp] 未找到return "quick.html";//2. 文.件[/pages/quick.html.jsp] 未找到return "/quick.html";//3.文.件[/pages/aside.jsp.jsp] 未找到return "aside.jsp";//4.访问失败,服务器崩溃!!!,因为少加了“/"return "forward:quick.html";//5.成功访问/quick.html,不会添加前缀与后缀return "forward:/quick.html";//6.访问失败,缺少“/”,服务器收不到请求(估计定向到其他地方了(不存在的路径))return "redirect:quick.html";//7.成功访问,/quick.html,不会添加前缀与后缀return "redirect:/quick.html";//8./quick.html,return "redirect:/quick.jsp";//9.成功访问https://www.baidu.com,不会添加前缀与后缀return "redirect:https://www.baidu.com";}
总结:字符串的最前面有forward: 或 redirect:,那么就不会添加前缀和后缀。
四、业务功能实现步骤。
相关文章:

23.Spring练习(spring、springMVC)
目录 一、Spring练习环境搭建。 (1)设置服务器启动的展示页面。 (2)创建工程步骤。 (3)applicationContext.xml配置文件。 (4)spring-mvc.xml配置文件。 (5&#x…...

【数据库原理 • 七】数据库并发控制
前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前…...

内部人员或给企业造成毁灭性损失
全球每年有近百万企业因数据丢失而倒闭。而媒体几乎每个月都会报道数百起恶意和无意的内部威胁事件,导致的企业机构名誉损失、巨额赔款甚至于面临运营危机。 内部威胁主要有三个来源: 1、疏忽或无意的员工; 2、有意识或恶意的内部人员&…...

【技巧】Word“只读方式”的设置与取消
如果你担心在阅读Word文档的时候,不小心修改并保存了内容,那就给文档设置“只读方式”吧,这样就算不小心做了修改也不能随意保存。 Word文档的“只读方式”有两种模式,对此不清楚的小伙伴,来看看如何设置和取消吧。 模…...

【软考备战·希赛网每日一练】2023年4月12日
文章目录一、今日成绩二、错题总结第一题三、知识查缺题目及解析来源:2023年04月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 依据题目画出PERT图如下: 关键路径长度(从起点到终点的路径中最长的一条&#x…...

算法记录 | Day28 回溯算法
93.复原IP地址 思路: 1.确定回溯函数参数:定义全局遍历存放res集合和单个path,还需要 s字符 startindex(int)为下一层for循环搜索的起始位置。 2.终止条件:当len(path)4且遍历到字符串最末尾ÿ…...

气象历史数据和空气质量历史数据资源汇总免费
气象数据和空气质量数据资源汇总 1.全球气象数据资源 WorldClim 网址:Global climate and weather data — WorldClim 1 documentation WorldClim是一个全球高分辨率气候数据分享平台。截止2021年03月,其包括以下数据: •Climate数据&am…...

【区块链】走进web3的世界-对于前端来说,web2与web3的区别
web3离不开几个概念,智能合约、区块链、前端交互 1、智能合约可以直接与区块链中的区块进行交互; 2、前端通过web3.js/ethers.js等npm库可以和智能合约进行交互; 说的直白点,web3与web2对于前端来说,只是对接的对象发生…...

深拷贝和浅拷贝
目录 一.Java的Cloneable和clone()方法 1.Object类中的clone() 2.实现Cloneable接口的类 3.通过clone()生成对象的特点 二.深拷贝和浅拷贝 1.浅拷贝 2.深拷贝 3.实现深拷贝的两种方法 1.一种是递归的进行拷贝 2.Json字符串的方式进行深拷贝 一.Java的Cloneable和clone…...

【回眸】ChatGPT Plus(GPT4体验卡)
前言 没忍住诱惑,开了个GPT4.0的会员,给大家表演一波 开通成功 开始问问题 写一个CNN疲劳驾驶监测代码,要求{使用Python语言,使用包,能成功运行,需要调用电脑摄像头,要求GUI界面有一些参数…...

走进小程序【七】微信小程序【常见问题总结】
文章目录🌟前言🌟小程序登录🌟unionid 和 openid🌟关键Api🌟登录流程设计🌟利用现有登录体系🌟利用OpenId 创建用户体系🌟利用 Unionid 创建用户体系🌟授权获取用户信息流…...

光电隔离转换器 直流信号放大器 导轨安装DIN11 IPO OC系列
概述: 导轨安装DIN11 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号隔离测控的行业。此系列产品内部采用了线性光电隔离技术相…...

语聊房app的开发以及运营思路
语聊房app是一种基于实时语音交流的社交应用,用户可以通过该应用结识新朋友、交流经验、分享兴趣爱好等,因此备受年轻用户的青睐。以下是语聊房app的开发以及运营思路: 一、开发思路 功能设计 语聊房app的核心功能是实时语音聊天࿰…...

目标检测基础之IOU计算
目标检测基础之IOU计算概念理解——什么是IOUdemo后记概念理解——什么是IOU IOU 交并比(Intersection over Union),从字面上很容易理解:计算交集在并集的比重。从网上截张图看看 IOUA∩BA∪BIOU \frac{A \cap B}{A \cup B} IO…...

从spring boot泄露到接管云服务器平台
0x1前言 在打野的时候意外发现了一个站点存在spring boot信息泄露,之前就有看到一些文章可以直接rce啥的,今天刚好试试。通过敏感信息发现存在accesskey泄露,就想直接通过解密,获取敏感信息,接管云平台。 首先说下这个…...

大数据技术——spark集群搭建
目录 spark概述 spark集群搭建 1.Spark安装 2.环境变量配置 3.Spark集群配置 4.启动Spark集群 存在问题及解决方案 请参考以下文章 spark概述 Spark是一个开源的大数据处理框架,它可以在分布式计算集群上进行高效的数据处理和分析。Spark的特点是速度快、易…...

嵌入式学习笔记汇总
本文整理STM32、STM8和uCOS-III的所有文章链接。 STM32学习笔记目录 源码:mySTM32-learn STM32学习笔记(1)——LED和蜂鸣器 STM32学习笔记(2)——按键输入实验 STM32学习笔记(3)——时钟系统 …...

Python 全栈系列220 Tornado的服务搭建
说明 想法变的真快 本来是没打算用Tornado的,主要是想节约时间。但是现在看来不用还是不行:目前用gevent flask部署的时候,启动多核的worker似乎存在问题。 另外,有很多内部基础的数据服务,其实并不需要flask的各种组…...

ESXi安装CentOS
ESXi安装 参考:https://blog.csdn.net/tongxin_tongmeng/article/details/129466704 CentOS安装 镜像:http://mirrors.aliyun.com/centos/7/isos/x86_64-->CentOS-7-x86_64-DVD-2009.iso CentOS配置 FinalShell连接 ESXi简介 1.ESXi是由VMware公司…...

WebTest搭建
0.前言 此框架为真实项目实战,所以有些数据不便展示,只展示架构和思想 工具:pythonseleniumddtunittest 1.架构说明 2.代码封装 Commom层 base_page.py #__author__19044168 #date2021/8/26 import logging import datetime from sele…...

什么性格的人适合报考机械类专业?(高考志愿填报选专业)
机械类专业 是指涉及机械设计、制造、加工、维护等方面的专业,是工程类专业中的一类。机械类专业的学生主要学习机械工程的基础知识,包括机械设计、力学、材料力学、热力学、流体力学等,同时也会学习机械制造、机电一体化、机器人技术等实践性…...

进程概念详解
目录 进程是什么? 描述进程:进程控制块-PCB task_struct task_struct 是什么? task_struct内容分类 组织进程 查看进程 fork创建子进程 进程状态 僵尸进程 孤儿进程 进程优先级 其他概念 进程是什么? 一般书上…...

C语言基础——指针
文章目录一、指针1.指针的意义2.指针类型表示3.一些操作3.1打印1个变量地址3.2通过地址查看改地址的内容以及修改改地址的内容3.3操作某个空间 -- 4个字节,给他赋值为100,只知道该空间的地址0x8000 00004.指针变量的定义5.指针类型的大小6.指针变量的使用6.1 指针变…...

反序列化渗透与攻防(二)之Java反序列化漏洞
Java反序列化漏洞 反序列化漏洞 JAVA反序列化漏洞到底是如何产生的? 1、由于很多站点或者RMI仓库等接口处存在java的反序列化功能,于是攻击者可以通过构造特定的恶意对象序列化后的流,让目标反序列化,从而达到自己的恶意预期行为,包括命令执行,甚至 getshell 等等。 …...

优先级队列的模拟实现(仿函数)
目录: 1.priority_queue接口的实现(先建大堆) 1.push 加 向上调整的实现 2.pop 3.迭代器区间的构造 2.仿函数 3.仿函数优化我们的优先级队列 -------------------------------------------------------------------------------------------…...

Python pandas和numpy用法参考(转)
以下是转载:Python pandas用法 - 简书介绍 在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处...https://www.jianshu.com/p/840ba1…...

mysql数据库的在线数据备份与数据恢复
MySQL是一种常用的关系型数据库管理系统,它支持在线备份和恢复数据。在线备份指的是在MySQL数据库运行时备份数据,而不会中断或影响现有的数据库服务。在本文中,我们将介绍MySQL数据库的在线数据备份和恢复的原理和操作步骤。 一、备份原理 …...

Vue3自定义指令之前端水印功能实现
一、前置知识 — Vue 中的自定义指令 先来说说 vue2和vue3中自定义全局指令的区别 相同点:指令的应用场景,原理是一致的; 不同点:生命周期钩子函数名,指令定义的格式不一样。 vue2中自定义全局指令: 定义…...

文章生成器写出来的原创文章
文章生成机器人 文章生成机器人是一种基于人工智能技术和自然语言处理算法的程序,可以自动地生成高质量、原创的文章。 文章生成机器人的优点如下: 提高工作效率:文章生成机器人能够在较短的时间内自动帮助用户生成大量的文章,提…...

2023年全国最新高校辅导员精选真题及答案49
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 76.气质就是我们平常所说的脾气秉性。 答案:正确 77.社会心理通常是通过社会…...