MVC分层实现管理员后台商品查询

  MVC层即model view controller

  Model(模型):模型代表着核心的业务逻辑和数据(不要理解成Model只是实体类)

  View(视图):视图应该关注与如何展示数据,而不应该包含任何业务逻辑(业务逻辑应写在Model中)

  Controller(控制器):控制器控制着程序的逻辑,并充当着视图和模型之间的协调角色。控制器从视图层接收用户输入的信息,然后使用模型来执行特定的操作,并把最终的结果回传给视图

  model层:存放业务逻辑处理,不直接和数据库打交道但存放关于数据库处理的操作

  Dao层:对数据库进行数据持久化操作,操作直接针对数据库

  index.jsp进行首页的展示,用户可以在首页进行普通用户的注册和登录,当使用管理员账号登录时候可以进入商品后台对其进行进一步管理(LoginServlet.java中实现)

  项目结构

  

  DBUtil.java模拟数据库,已存在的管理员用户和商品信息列表如下,注册时只能对普通用户进行注册,Gary和Gary2的isAdmin为True

  1. public static Map<String , User> userMap = new HashMap<String , User>();
  2. public static List<Goods> goodsList = new ArrayList<Goods>();
  3.  
  4. static {
  5. addUser(new User("Gary","123",10,"男",true));
  6. addUser(new User("Gary2","456",20,"男",true));
  7.  
  8. goodsList.add(new Goods("香蕉","这个是香蕉",100,110));
  9. goodsList.add(new Goods("苹果","这个是苹果",200,120));
  10. goodsList.add(new Goods("西瓜","这个是西瓜",300,130));
  11. goodsList.add(new Goods("桃子","这个是桃子",400,140));
  12. }

逻辑层:处理代码请求

  1. package com.Gary.controller;
  2.  
  3. import java.io.IOException;
  4. import java.util.List;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import com.Gary.model.Goods;
  13. import com.Gary.service.GoodsService;
  14.  
  15. @WebServlet("/admin/goods_list")
  16. public class GoodsListServlet extends HttpServlet {
  17.  
  18. @Override
  19. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  20.  
  21. doGet(req, resp);
  22. }
  23.  
  24. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  25. List<Goods> list = new GoodsService().selectAllGoods();
  26. request.setAttribute("list", list);
  27. request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response);
  28. }
  29.  
  30. }

GoodsListServlet.java

  1. package com.Gary.controller;
  2.  
  3. import java.io.IOException;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.Gary.model.User;
  11. import com.Gary.service.UserService;
  12.  
  13. @WebServlet("/login_do")
  14. public class LoginServlet extends HttpServlet {
  15. @Override
  16. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  17. String username = request.getParameter("username");
  18. String password = request.getParameter("password");
  19.  
  20. UserService service = new UserService();
  21. User user =service.login(username, password);
  22.  
  23. System.out.println(user);
  24. if(user!=null) {
  25. request.getSession().setAttribute("user", user);
  26. //System.out.println(user);
  27. //TODO
  28. if(user.isAdmin()) {
  29. //管理员
  30. //response.sendRedirect(request.getContextPath()+"/admin/goods_list.jsp");
  31. request.getRequestDispatcher("admin/goods_list").forward(request, response);
  32. //不需要传递数据时可以使用重定向
  33. //response.sendRedirect(request.getContextPath()+"/admin/good_list");
  34. }else {
  35. //普通用户
  36. //System.out.println("完成");
  37. request.getRequestDispatcher("/").forward(request, response);
  38. }
  39. }else {
  40. request.setAttribute("msg", "<font color='red'>用户名或密码错误,请重新登录!</font>");
  41. request.getRequestDispatcher("/login.jsp").forward(request, response);
  42. }
  43. }
  44.  
  45. }

LoginServlet.java

  1. package com.Gary.controller;
  2.  
  3. import java.io.IOException;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.Gary.service.UserService;
  11.  
  12. /**
  13. * Servlet implementation class RegisterService
  14. */
  15. @WebServlet("/register_do")
  16. public class RegisterService extends HttpServlet {
  17.  
  18. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  19. //设置中文编码
  20. request.setCharacterEncoding("utf-8");
  21. String username = request.getParameter("username");
  22. String password = request.getParameter("password");
  23. int age = Integer.parseInt(request.getParameter("age"));
  24. String sex = request.getParameter("sex");
  25.  
  26. UserService userService = new UserService();
  27. boolean isSuccess = userService.register(username,password,age,sex);
  28. if(isSuccess) {
  29. request.setAttribute("msg", "<font color='green'>注册成功,请登录!</font>");
  30. request.getRequestDispatcher("/login.jsp").forward(request, response);
  31. }else {
  32. request.setAttribute("msg", "<font color='red'>用户名重复,请重新填写</font>");
  33. request.getRequestDispatcher("/register.jsp").forward(request, response);
  34. }
  35. }
  36.  
  37. }

RegisterService.java

DAO层:将数据存到数据库中

  1. package com.Gary.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import com.Gary.model.Goods;
  6. import com.Gary.util.DBUtil;
  7.  
  8. public class GoodsDao {
  9. public List<Goods> getAllGoods(){
  10. return DBUtil.goodsList;
  11. }
  12. }

GoodsDao.java

  1. package com.Gary.dao;
  2.  
  3. import com.Gary.model.User;
  4. import com.Gary.util.DBUtil;
  5.  
  6. public class UserDao {
  7.  
  8. public boolean isExist(String username) {
  9. return DBUtil.userMap.containsKey(username);
  10. }
  11.  
  12. public boolean addUser(String username,String password,int age,String sex) {
  13. if(isExist(username)) return false;
  14. User u = new User(username,password,age,sex,false);
  15. DBUtil.userMap.put(u.getUsername(),u);
  16. return true;
  17. }
  18.  
  19. public User getUserByUP(String username,String password) {
  20. if(isExist(username)==false) return null;
  21. User u = DBUtil.userMap.get(username);
  22. if(u.getPassword().equals(password))return u;
  23. else return null;
  24. }
  25.  
  26. }

UserDao.java

model层:存放我们的实体类,与数据库中的属性值基本保持一致

  1. package com.Gary.model;
  2.  
  3. public class Goods {
  4. private String name;
  5. private String des;
  6. private int price;
  7. private int inventory;
  8. public Goods(String name, String des, int price, int inventory) {
  9. super();
  10. this.name = name;
  11. this.des = des;
  12. this.price = price;
  13. this.inventory = inventory;
  14. }
  15.  
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public String getDes() {
  23. return des;
  24. }
  25. public void setDes(String des) {
  26. this.des = des;
  27. }
  28. public int getPrice() {
  29. return price;
  30. }
  31. public void setPrice(int price) {
  32. this.price = price;
  33. }
  34. public int getInventory() {
  35. return inventory;
  36. }
  37. public void setInventory(int inventory) {
  38. this.inventory = inventory;
  39. }
  40.  
  41. }

Goods.java

  1. package com.Gary.model;
  2.  
  3. public class User {
  4. private String username;
  5. private String password;
  6. private int age;
  7. private String sex;
  8. private boolean isAdmin=false; //判断是否是管理员账号
  9.  
  10. public User(String username, String password, int age, String sex, boolean isAdmin) {
  11. super();
  12. this.username = username;
  13. this.password = password;
  14. this.age = age;
  15. this.sex = sex;
  16. this.isAdmin = isAdmin;
  17. }
  18. public String getUsername() {
  19. return username;
  20. }
  21. public void setUsername(String username) {
  22. this.username = username;
  23. }
  24. public String getPassword() {
  25. return password;
  26. }
  27. public void setPassword(String password) {
  28. this.password = password;
  29. }
  30. public int getAge() {
  31. return age;
  32. }
  33. public void setAge(int age) {
  34. this.age = age;
  35. }
  36. public String getSex() {
  37. return sex;
  38. }
  39. public void setSex(String sex) {
  40. this.sex = sex;
  41. }
  42. public boolean isAdmin() {
  43. return isAdmin;
  44. }
  45. public void setAdmin(boolean isAdmin) {
  46. this.isAdmin = isAdmin;
  47. }
  48.  
  49. }

User.java

service层:存放业务逻辑处理

  1. package com.Gary.service;
  2.  
  3. import java.util.List;
  4.  
  5. import com.Gary.dao.GoodsDao;
  6. import com.Gary.model.Goods;
  7.  
  8. public class GoodsService {
  9. public List<Goods> selectAllGoods(){
  10. return new GoodsDao().getAllGoods();
  11. }
  12. }

GoodsService.java

  1. package com.Gary.service;
  2.  
  3. import com.Gary.dao.UserDao;
  4. import com.Gary.model.User;
  5.  
  6. public class UserService {
  7. //处理注册请求
  8. public boolean register(String username,String password,int age ,String sex) {
  9. UserDao userDao = new UserDao();
  10. boolean isExist =userDao.isExist(username);
  11. if(isExist)
  12. return false;
  13. else
  14. userDao.addUser(username, password, age, sex);
  15. return true;
  16. }
  17.  
  18. public User login(String username,String password) {
  19. return new UserDao().getUserByUP(username, password);
  20. }
  21. }

UserService.java

util层:辅助作用  【我用来做数据库的模拟】

  1. package com.Gary.util;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7.  
  8. import com.Gary.model.Goods;
  9. import com.Gary.model.User;
  10.  
  11. //模拟数据库
  12. public class DBUtil {
  13. public static Map<String , User> userMap = new HashMap<String , User>();
  14. public static List<Goods> goodsList = new ArrayList<Goods>();
  15.  
  16. static {
  17. addUser(new User("Gary","123",10,"男",true));
  18. addUser(new User("Gary2","456",20,"男",true));
  19.  
  20. goodsList.add(new Goods("香蕉","这个是香蕉",100,110));
  21. goodsList.add(new Goods("苹果","这个是苹果",200,120));
  22. goodsList.add(new Goods("西瓜","这个是西瓜",300,130));
  23. goodsList.add(new Goods("桃子","这个是桃子",400,140));
  24. }
  25.  
  26. private static void addUser(User user) {
  27. userMap.put(user.getUsername(), user);
  28. }
  29.  
  30. }

DBUtil.java

商品列表页面

  1. <%@page import="com.Gary.model.Goods"%>
  2. <%@page import="java.util.List"%>
  3. <%@ page language="java" contentType="text/html; charset=utf-8"
  4. pageEncoding="utf-8"%>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Insert title here</title>
  10. <style type="text/css">
  11. *{
  12. font-size = 20px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17.  
  18. <h1>商品管理</h1>
  19. </hr>
  20. <a>添加</a>
  21. <table border = "1">
  22. <tr>
  23. <td>商品名</td><td>描述</td><td>价格</td><td>库存</td><td>操作</td>
  24. </tr>
  25.  
  26. <%
  27. List<Goods> list = (List<Goods>)request.getAttribute("list");
  28. for(Goods goods : list){
  29. %>
  30. <tr>
  31. <td><%=goods.getName() %></td><td><%=goods.getDes() %></td><td><%=goods.getPrice() %></td><td><%=goods.getInventory() %></td><td>删除 修改</td>
  32. </tr>
  33. <%
  34. }
  35. %>
  36.  
  37. <!-- <tr> -->
  38. <!-- <td>香蕉</td><td>这个是香蕉</td><td>78</td><td>500</td><td>删除 修改</td> -->
  39. <!-- </tr> -->
  40.  
  41. </body>
  42. </html>

goods_list.jsp

首页面

  1. <%@ page import="com.Gary.model.User" %>
  2. <%@ page language="java" contentType="text/html; charset=utf-8"
  3. pageEncoding="utf-8"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8">
  8. <title>Insert title here</title>
  9. </head>
  10.  
  11. <%
  12. Object user = session.getAttribute("user");
  13. if(user==null){
  14. %>
  15. <a href="<%=request.getContextPath() %>/login.jsp">登录</a>
  16. <a href="<%=request.getContextPath() %>/register.jsp">注册</a>
  17. <%
  18. }else{
  19. out.println("当前登录用户:"+((User)user).getUsername());
  20. }
  21. %>
  22.  
  23. <body>
  24.  
  25. </br>
  26. 各种商品的展示
  27. </body>
  28. </html>

index.jsp

用户登录页面

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10.  
  11. <%
  12. if(request.getAttribute("msg")!=null)
  13. out.println(request.getAttribute("msg")+"<br/>");
  14. %>
  15.  
  16. 登录
  17. <hr/>
  18. <form action="<%=request.getContextPath() %>/login_do" method="post">
  19. 用户名:<input type="text" name="username" /><br/>
  20. 密码:<input type="password" name="password" /><br/>
  21. <input type="submit" value="登录" />
  22. </form>
  23.  
  24. </body>
  25. </html>

login.jsp

用户注册页面

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10.  
  11. <%
  12. if(request.getAttribute("msg")!=null)
  13. out.println(request.getAttribute("msg")+"<br/>");
  14. %>
  15.  
  16. 注册
  17. <hr/>
  18. <form action="<%=request.getContextPath() %>/register_do" method="post">
  19. 用户名:<input type="text" name="username" /><br/>
  20. 密码:<input type="password" name="password" /><br/>
  21. 年龄:<input type="text" name="age" /><br/>
  22. 性别: 男<input type="radio" name="sex" value="男" checked="checked"/><input type="radio" name="sex" value="女" /><br/>
  23. <input type="submit" value="注册" />
  24. </form>
  25.  
  26. </body>
  27. </html>

register.jsp

实现过程

  index.jsp判断有无用户登录,有用户登录时展示用户信息,若无用户登录则显示用户注册登录

  1. <%
  2. Object user = session.getAttribute("user");
  3. if(user==null){
  4. %>
  5. <a href="<%=request.getContextPath() %>/login.jsp">登录</a>
  6. <a href="<%=request.getContextPath() %>/register.jsp">注册</a>
  7. <%
  8. }else{
  9. out.println("当前登录用户:"+((User)user).getUsername());
  10. }
  11. %>

  用户注册后将表单提交给register_do

  1. <form action="<%=request.getContextPath() %>/register_do" method="post">
  2. 用户名:<input type="text" name="username" /><br/>
  3. 密码:<input type="password" name="password" /><br/>
  4. 年龄:<input type="text" name="age" /><br/>
  5. 性别: 男<input type="radio" name="sex" value="男" checked="checked"/><input type="radio" name="sex" value="女" /><br/>
  6. <input type="submit" value="注册" />
  7. </form>

  创建用户数据模型User,java和Goods.java

  1. private String username;
  2. private String password;
  3. private int age;
  4. private String sex;
  5. private boolean isAdmin=false; //判断是否是管理员账号

  

  1. private String name;
  2. private String des; //商品描述信息
  3. private int price;
  4. private int inventory; //商品库存

  DBUtil.java模拟数据库,将用户与商品存放到List<>集合中

  1. public static Map<String , User> userMap = new HashMap<String , User>();
  2. public static List<Goods> goodsList = new ArrayList<Goods>();
  3.  
  4. static {
  5. addUser(new User("Gary","123",10,"男",true));
  6. addUser(new User("Gary2","456",20,"男",true));
  7.  
  8. goodsList.add(new Goods("香蕉","这个是香蕉",100,110));
  9. goodsList.add(new Goods("苹果","这个是苹果",200,120));
  10. goodsList.add(new Goods("西瓜","这个是西瓜",300,130));
  11. goodsList.add(new Goods("桃子","这个是桃子",400,140));
  12. }
  13.  
  14. private static void addUser(User user) {
  15. userMap.put(user.getUsername(), user);
  16. }

  UserDao.java和GoodDao.java处理数据库逻辑

  1. //用户是否退出登录
  2. public boolean isExist(String username) {
  3. return DBUtil.userMap.containsKey(username);
  4. }
  5.  
  6. //添加用户
  7. public boolean addUser(String username,String password,int age,String sex) {
  8. if(isExist(username)) return false;
  9. User u = new User(username,password,age,sex,false);
  10. DBUtil.userMap.put(u.getUsername(),u);
  11. return true;
  12. }
  13.  
  14. //判断用户是否登录成功
  15. public User getUserByUP(String username,String password) {
  16. if(isExist(username)==false) return null;
  17. User u = DBUtil.userMap.get(username);
  18. if(u.getPassword().equals(password))return u;
  19. else return null;
  20. }
  1. public class GoodsDao {
  2. //列出所有的商品
  3. public List<Goods> getAllGoods(){
  4. return DBUtil.goodsList;
  5. }
  6. }

  RegisterService.java处理用户注册信息,处理用户的注册和登录

  1. @WebServlet("/register_do")
  2. public class RegisterService extends HttpServlet {
  3.  
  4. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5. //设置中文编码
  6. request.setCharacterEncoding("utf-8");
  7. String username = request.getParameter("username");
  8. String password = request.getParameter("password");
  9. int age = Integer.parseInt(request.getParameter("age"));
  10. String sex = request.getParameter("sex");
  11.  
  12. UserService userService = new UserService();
  13. boolean isSuccess = userService.register(username,password,age,sex);
  14. if(isSuccess) {
  15. request.setAttribute("msg", "<font color='green'>注册成功,请登录!</font>");
  16. request.getRequestDispatcher("/login.jsp").forward(request, response);
  17. }else {
  18. request.setAttribute("msg", "<font color='red'>用户名重复,请重新填写</font>");
  19. request.getRequestDispatcher("/register.jsp").forward(request, response);
  20. }
  21. }
  22.  
  23. }

  LoginServlet.java处理用户登录后分用户和管理员操作,用户跳转到首页,管理员则转发到goods_list对商品后台信息进行处理

  GoodsListServlet.java处理转发的goods_list请求

  1. @WebServlet("/admin/goods_list")
  2. public class GoodsListServlet extends HttpServlet {
  3.  
  4. @Override
  5. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  6.  
  7. doGet(req, resp);
  8. }
  9.  
  10. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11. List<Goods> list = new GoodsService().selectAllGoods();
  12. request.setAttribute("list", list);
  13. request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response);
  14. }
  15.  
  16. }

  goods_list.jsp展示数据库中商品信息列表

  1. <%
  2. List<Goods> list = (List<Goods>)request.getAttribute("list");
  3. for(Goods goods : list){
  4. %>
  5. <tr>
  6. <td><%=goods.getName() %></td><td><%=goods.getDes() %></td><td><%=goods.getPrice() %></td><td><%=goods.getInventory() %></td><td>删除 修改</td>
  7. </tr>
  8. <%
  9. }
  10. %>
  11.  
  12. <!-- <tr> -->
  13. <!-- <td>香蕉</td><td>这个是香蕉</td><td>78</td><td>500</td><td>删除 修改</td> -->
  14. <!-- </tr> -->

JavaWeb_(MVC)管理员后台商品查询demo的更多相关文章

  1. 【spring mvc】后台API查询接口,get请求,后台Date字段接收前台String类型的时间,报错default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createDate';

    后台API查询接口,get请求,后台Date字段接收前台String类型的时间筛选条件 后台接口接收 使用的实体 而createDate字段在后台实体中是Date类型 报错信息: org.spring ...

  2. 返璞归真 asp.net mvc (1) - 添加、查询、更新和删除的 Demo

    原文:返璞归真 asp.net mvc (1) - 添加.查询.更新和删除的 Demo [索引页] [源码下载] 返璞归真 asp.net mvc (1) - 添加.查询.更新和删除的 Demo 作者 ...

  3. React MVC框架 <某某后台商品管理开源项目> 完成项目总结

    **百货后台商品信息开源项目 1.利用React  app脚手架 2.封装打包 buid 3.更偏向于后台程序员开发思维 4.利用的 react -redux    react-router-dom  ...

  4. ASP.NET MVC+JQueryEasyUI1.4+ADO.NET Demo

    1.JQueryEasyUI使用 JQuery EasyUI中文官网:http://www.jeasyui.net/ JQuery EasyUI中文官网下载地址:http://www.jeasyui. ...

  5. MVC 从后台页面 取前台页面传递过来的值的几种取法

      MVC 从后台页面 取前台页面传递过来的值的几种取法   <1>前台页面 Index视图 注意:用户名表单的name值为txtName 密码表单的name值为txtPassword & ...

  6. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  7. 50个令人惊奇的jQuery插件(对话框和表单篇)及免费的响应式bootstrap管理员后台界面主题 - Charisma

    http://www.woiweb.net/50-amazing-jquery-plugins.html 多文件文件下载 免费的响应式bootstrap管理员后台界面主题 – Charisma htt ...

  8. ECSHOP后台商品列表显示商品缩略图

    ECSHOP后台商品列表显示商品缩略图 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-11-06   ecshop 后台商品列表显示商品缩略图,大楷步凑如下: ...

  9. IOS CoreData 多表查询demo解析

    在IOS CoreData中,多表查询上相对来说,没有SQL直观,但CoreData的功能还是可以完成相关操作的. 下面使用CoreData进行关系数据库的表与表之间的关系演示.生成CoreData和 ...

随机推荐

  1. Luogu P5354 [Ynoi2017]由乃的OJ

    题目 这题以前叫睡觉困难综合征. 首先我们需要知道起床困难综合征怎么做. 大概就是先用一个全\(0\)和全\(1\)的变量跑一遍处理出每一位\(1\)和\(0\)最后会变成什么. 然后高位贪心:如果当 ...

  2. 2019CCPC-江西省赛 -A Cotree (树形DP,求树上一点到其他点的距离之和)

    我是傻逼我是傻逼 #include<bits/stdc++.h> using namespace std; const int maxn=4e5+50; typedef long long ...

  3. git diff 命令介绍

    https://www.jianshu.com/p/6e1f7198e76a https://www.jianshu.com/p/5b6a014ac3db https://blog.csdn.net/ ...

  4. java.util.MissingFormatArgumentException: Format specifier '%s'

    java.util.MissingFormatArgumentException: Format specifier '%s' at java.util.Formatter.format(Format ...

  5. IntelliJ IDEA setup JDK无效

    参考 问题现象:功能全部爆红,总是提示“setup JDK”,设置JDK后无效.但程序能够正常编译和运行. 解决方法:  File -> Invalidate Caches/Restart -& ...

  6. 110、通过案例学习Secret (Swarm17)

    参考https://www.cnblogs.com/CloudMan6/p/8098761.html   在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客 ...

  7. 第十二篇 JavaScript(简称JS) 实现显示与隐藏

    JavaScript   JavaScript简称JS.JS是脚本语言,它是一种轻量级的编程语言,是可以插入HTML页面的编程代码,几乎所有现代浏览器都是支持的. 理论老师不行,我就抄袭手册上的一些关 ...

  8. ssh无密码访问设置(ssh-keygen 的详解)

    [原文链接]http://blog.csdn.net/wh_19910525/article/details/7433164 为了让两个linux机器之间使用ssh不需要用户名和密码.所以采用了数字签 ...

  9. linux添加开机启动项、登陆启动项、定时启动项、关机执行项等的方法

    使用chkconfig命令可以查看在不同启动级别下课自动启动的服务(或是程序),命令格式如下: chkconfig --list 可能输出如下: network         0:off   1:o ...

  10. python、第二篇:库相关操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...