基于javaweb的SpringBoot图片管理系统图片相册(java+springboot+maven+vue+element-ui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

392124342208

402124342208

412124342208

422124342208

432124342208

442124342208

452124342208

472124342208

482124342208

基于javaweb的SpringBoot图片管理系统图片相册(java+springboot+maven+vue+element-ui+mysql)

后端启动类:StartApplication
前端启动命令:npm run serve

管理员:admin 123456
用户:user 123456

基于springboot+vue2的水果图片信息管理系统:
前端 vue、elementui
后端 maven、springmvc、spring、mybatis;
角色分为管理员、用户;集成图片浏览,评论,留言板等功能于一体的系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* 添加内容
* @return
*/
@RequestMapping("/lunbotuinsert")
public String insert() {
_var = new LinkedHashMap(); // 重置数据
String tmp = "";
Lunbotu post = new Lunbotu(); // 创建实体类
// 设置前台提交上来的数据到实体类中
post.setTitle(Request.get("title"));

post.setImage(Request.get("image"));

post.setUrl(Request.get("url"));

service.insert(post); // 插入数据
int charuid = post.getId().intValue();

if (isAjax()) {
return jsonResult(post);
}
return showSuccess("保存成功", Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
}

/**
* 更新内容
* @return
*/
@RequestMapping("/lunbotuupdate")
public String update() {
_var = new LinkedHashMap(); // 重置数据
// 创建实体类
Lunbotu post = new Lunbotu();
// 将前台表单数据填充到实体类
if (!Request.get("title").equals("")) post.setTitle(Request.get("title"));
if (!Request.get("image").equals("")) post.setImage(Request.get("image"));
if (!Request.get("url").equals("")) post.setUrl(Request.get("url"));

post.setId(Request.getInt("id"));
service.update(post); // 更新数据
int charuid = post.getId().intValue();

if (isAjax()) {
return jsonResult(post);
}

return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
}

/**
* 删除
*/
@RequestMapping("/lunbotu_delete")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class CaptchaController extends BaseController {

/**
* 输出验证码图片,并记录session “random” 里等待登录时写入
*/
@RequestMapping("/captcha")
public String Index() {
// 把验证码字符串写入session 中,保存待下次验证时使用
String sRand = createRandomString(4);

try {
// 输出渲染好的内容到前端浏览器
if (isAjax()) {
String result = null;
do {
try {
result = DESUtil.encrypt("CaptchControllerPassword", sRand);
} catch (Exception e) {
result = null;
}
if (result != null) {
if (!sRand.equals(DESUtil.decrypt("CaptchControllerPassword", result))) {
result = null; // 解不出来所以出错
}
}
} while (result == null);

assign("url", "/randtocaptch?captchToken=" + urlencode(result));
assign("token", result);
return json();
} else {
//byte[] img = xxx;
response.setContentType("image/jpeg"); // 定义输出类型为 图片
response.setHeader("Pragma", "No-cache"); // 设置为无缓存
response.setHeader("Cache-Control", "no-cache"); // 设置为无缓存
response.setDateHeader("Expires", 0); // 设置缓存时间为0秒后过期
request.getSession().setAttribute("random", sRand);
ServletOutputStream stream = response.getOutputStream();
createCaptch(sRand, stream);
stream.flush();
stream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}

/**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 * 评论 */
@Controller
public class PinglunController extends BaseController {

@Autowired
private PinglunMapper dao;

@Autowired
private PinglunService service;

/**
* 后台列表页
*
*/
@RequestMapping("/pinglun_list")
public String list() {
// 检测是否有登录,没登录则跳转到登录页面
if (!checkLogin()) {
return showError("尚未登录", "./login.do");
}

String order = Request.get("order", "id"); // 获取前台提交的URL参数 order 如果没有则设置为id
String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort 如果没有则设置为desc
int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据
Example example = new Example(Pinglun.class); // 创建一个扩展搜索类
Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
String where = " 1=1 "; // 创建初始条件为:1=1
where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
criteria.andCondition(where); // 将条件写进上面的扩展条件类中
if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于 desc倒序 是则使用倒序,否则使用正序
example.orderBy(order).desc(); // 把sql 语句设置成倒序
} else {
example.orderBy(order).asc(); // 把 sql 设置成正序
}
int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page 如果没有则设置为1
page = Math.max(1, page); // 取两个数的最大值,防止page 小于1
List<Pinglun> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数

// 将列表写给界面使用
assign("totalCount", request.getAttribute("totalCount"));
assign("list", list);
assign("orderby", order); // 把当前排序结果写进前台
assign("sort", sort); // 把当前排序结果写进前台
return json(); // 将数据写给前端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

/**
* 更新内容
* @return
*/
@RequestMapping("/liuyanbanupdate")
public String update() {
_var = new LinkedHashMap(); // 重置数据
// 创建实体类
Liuyanban post = new Liuyanban();
// 将前台表单数据填充到实体类
if (!Request.get("xingming").equals("")) post.setXingming(Request.get("xingming"));
if (!Request.get("lianxidianhua").equals("")) post.setLianxidianhua(Request.get("lianxidianhua"));
if (!Request.get("liuyanneirong").equals("")) post.setLiuyanneirong(Request.get("liuyanneirong"));
if (!Request.get("liuyanren").equals("")) post.setLiuyanren(Request.get("liuyanren"));
if (!Request.get("huifuneirong").equals("")) post.setHuifuneirong(Request.get("huifuneirong"));
if (!Request.get("liuyanzhuangtai").equals("")) post.setLiuyanzhuangtai(Request.get("liuyanzhuangtai"));
if (!Request.get("addtime").equals("")) post.setAddtime(Request.get("addtime"));

post.setId(Request.getInt("id"));
service.update(post); // 更新数据
int charuid = post.getId().intValue();
Query.execute("update liuyanban set liuyanzhuangtai='已回复' where id='" + charuid + "'");

if (isAjax()) {
return jsonResult(post);
}

return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
}

/**
* 删除
*/
@RequestMapping("/liuyanban_delete")
public String delete() {
_var = new LinkedHashMap(); // 重置数据
if (!checkLogin()) {
return showError("尚未登录");
}
int id = Request.getInt("id"); // 根据id 删除某行数据
Map map = Query.make("liuyanban").find(id);

service.delete(id); // 根据id 删除某行数据
return showSuccess("删除成功", request.getHeader("referer")); //弹出删除成功,并跳回上一页
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        session.setAttribute("mima", user.getMima());
session.setAttribute("xingming", user.getXingming());
session.setAttribute("xingbie", user.getXingbie());
session.setAttribute("shouji", user.getShouji());
session.setAttribute("youxiang", user.getYouxiang());
session.setAttribute("touxiang", user.getTouxiang());
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(user));
jsonObject.put("cx", session.getAttribute("cx"));
jsonObject.put("username", session.getAttribute("username"));
jsonObject.put("login", session.getAttribute("login"));
assign("session", jsonObject);
}

if (session.getAttribute("username") == null) {
return showError("账号或密码错误");
}

assign("token", createToken(table, session.getAttribute("id"), session.getAttribute("cx"), session.getAttribute("login"), session.getAttribute("username")));

if (this.isAjax()) {
return json();
} else {
String referer = request.getParameter("referer");
if (referer == null) {
if (isAdmin) {
referer = "./main.do";
} else {
referer = "./";
}
}
return showSuccess("登录成功", referer);
}
}

@Resource
protected JwtTokenUtils jwtTokenUtils;

public String createToken(Object table, Object id, Object cx, Object login, Object username) {
HashMap tokenMap = new HashMap();
tokenMap.put("tab", table);
tokenMap.put("id", id);
tokenMap.put("cx", cx);
tokenMap.put("username", username);
tokenMap.put("login", login);
return jwtTokenUtils.generateToken(id, tokenMap);
}


项目链接:
https://javayms.github.io?id=382124342208201mj
https://javayms.pages.dev?id=382124342208201mj