一:注册页面:regist.jsp:

<%@ 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>Insert title here</title>
<script type="text/javascript">
function changeImg(){
document.getElementById("myImg").src='${pageContext.request.contextPath}/servlet/CheckCodeServlet?' +
new Date().getTime();
}
function validataForm(){
var username = document.getElementById("username").value;
if(username == ""){
alert("用户名不能为空!");
return false;
} var password = document.getElementById("password").value;
if(password == ""){
alert("密码不能为空!");
return false;
} var repassword = document.getElementById("repassword").value;
if(password != repassword){
alert("两次密码不一致!");
return false;
} var email = document.getElementById("email").value;
if(email.match("^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$")==null){
alert("哥们儿,邮箱地址非法");
return false;
}
}
</script>
</head>
<body>
<form action="${pageContext.request.contextPath }/servlet/RegistServlet" onsubmit="return validataForm();" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" id="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="passoword" name="password" id="password"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="repassword" id="repassword"></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="email" id="email"></td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" name="checkcode">
<img src="${pageContext.request.contextPath }/servlet/CheckCodeServlet"
onclick="changeImg();" style="cursor: pointer;" id="myImg"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="注册"></td>
</tr>
</table>
</form>
</body>
</html>

二:.验证码servlet:CheckCodeServlet.java
完成页面显示验证码的效果:

package com.itcode.view;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random; import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CheckCodeServlet extends HttpServlet { // ctrl + shift +X 变大写 ----------- Y
private final int WIDTH = 120;
private final int HEIGHT = 30; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setHeader("cache-control", "no-cache");
response.setHeader("pragma", "no-cache");
response.setDateHeader("expires", -1); // 1.在内存中构建出一张 图片
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = (Graphics2D) image.getGraphics(); // 将 背景设置 为 白色 .
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, WIDTH, HEIGHT); // 状态机
// 画 矩形 . 之前 由于已经设置 过 颜色 ,就相当于 维护了 一个状态机, 所以 你需要 再次调用 setCorlor , 否则 就看不到 你 画 的矩形了 .
graphics.setColor(Color.BLUE);
graphics.drawRect(0, 0, WIDTH-1, HEIGHT-1); // 准备好 要 使用的 汉字.
// String base ="ABCDEFGHIJKLMNOPQRST";
String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\u800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b\u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\u591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\u5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\u5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\u96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\u6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6"; Random rand = new Random();
// 设置颜色
graphics.setColor(Color.RED);
// 设置 字体
graphics.setFont(new Font("宋体",Font.BOLD,18)); StringBuilder sb = new StringBuilder(); int m =10;
// 在for循环中 将 汉字画上去
for (int i = 0; i < 4; i++) {
int index = rand.nextInt(base.length());
char charAt = base.charAt(index);
// -30 -- 30 int jiaodu = rand.nextInt(60) -30; double theta = jiaodu*Math.PI/180; graphics.rotate(theta, m, 15);
graphics.drawString(charAt +"", m, 20);
sb.append(charAt);
graphics.rotate(-theta, m, 15);
m+=25;
} // 画 4 条线 graphics.setColor(Color.GREEN);
for (int i = 0; i < 4; i++) {
int x1 = rand.nextInt(WIDTH);
int x2 = rand.nextInt(WIDTH);
int y1 = rand.nextInt(HEIGHT);
int y2 = rand.nextInt(HEIGHT);
// 调用 该方法, 划线 两点 确定 一条直线 . 需要 4 个点
graphics.drawLine(x1, y1, x2, y2);
} request.getSession().setAttribute("checkcode_session", sb.toString()); // 释放 graphics 对象, 调用 该方法之后 graphic 就不能再使用了 .
graphics.dispose(); // 通过该 imageIO 将 内存中构建好的 图片 与 response的流 给 关联起来.
ImageIO.write(image, "png", response.getOutputStream()); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

三:处理注册的servlet:RegistServlet.java

package com.itcode.controller;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import com.itcode.model.User;
import com.itcode.model.UserOperator; public class RegistServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("成功注册!");
User user = new User();
try {
BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
UserOperator userOperator = new UserOperator();
int UserFeedBack = userOperator.regist(user);
switch (UserFeedBack) {
case UserOperator.USERNAME_EXIST:
request.setAttribute("message", "用户名已经在在!");
// response.sendRedirect("/regist.jsp");
request.getRequestDispatcher("/regist.jsp").forward(request, response);
break;
case UserOperator.EMAIL_EXIST:
request.setAttribute("message", "邮箱已经被注册使用!");
request.getRequestDispatcher("/regist.jsp").forward(request, response);
break;
case UserOperator.SUCCESS:
response.sendRedirect("/user/login.jsp");//注意此时的路径与上面的路径的区别!
break;
default:
break;
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

四:RegistServlet的所需要的类:

User类:

package com.itcode.model;

public class User {
private String username;
private String password;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

UserOperator类:

package com.itcode.model;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class UserOperator {
public static final int USERNAME_EXIST=1;
public static final int EMAIL_EXIST=2;
public static final int SUCCESS =3;
/**
* 检验注册用户数据的合法性,并返回相应的状态码。
* @param user
* @return int userFeedBack
*/
public int regist(User user){
SAXReader saxReader = new SAXReader();
Document document =null;
try {
document = saxReader.read("d://users.xml");
} catch (DocumentException e) {
e.printStackTrace();
}
//1.得到文件的根标签:users
Element rootElement = document.getRootElement();
//2.由根标签得到所有的用户标签:user
List<Element> UserElements = rootElement.elements("user");
//3.遍历每个user,以便确保新注册的username,email是未使用过的
for (Element element : UserElements) {
if(element.elementText("username").equals(user.getUsername()))
return USERNAME_EXIST;
if(element.elementText("email").equals(user.getEmail()))
return EMAIL_EXIST;
}
//4.到此说明用户名,邮箱都是未使用过的,就将其加入文件,
//4.1创建用户根标签:user
Element userEle = DocumentHelper.createElement("user"); //4.2创建username标签,并赋值
Element usernameEle = DocumentHelper.createElement("username");
usernameEle.setText(user.getUsername()); //4.3创建password标签,并赋值
Element passwordEle = DocumentHelper.createElement("password");
passwordEle.setText(user.getPassword()); //4.3创建email标签,并赋值
Element emailEle = DocumentHelper.createElement("email");
emailEle.setText(user.getEmail()); //4.4将创建的各个标签加入到user根标签中
userEle.add(usernameEle);
userEle.add(passwordEle);
userEle.add(emailEle);
//4.5将创建的user标签加入到根标签users中:
rootElement.add(userEle); //5.将上述内存中的文件写回到原文件中:
XMLWriter xmlWriter =null;
OutputFormat format = OutputFormat.createPrettyPrint();
try {
xmlWriter = new XMLWriter(new FileOutputStream("d:\\users.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}catch (Exception e) {
e.printStackTrace();
} return SUCCESS; }
public User login(User user) {
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read("d://users.xml");
} catch (Exception e) {
e.printStackTrace();
}
Element rootElement = document.getRootElement();
List<Element> elements = rootElement.elements("user");
for (Element element : elements) {//如果存在,将此用户,如果不存在,返回空,
if(element.elementText("username").equals(user.getUsername()) &&
element.elementText("password").equals(user.getPassword())){
return user;
}
}
return null; }
}

五:登陆页面:login.jsp:

提供让用户填写登陆信息的页面

将用户填写的信息发给LoginServlet:

<%@ 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>Insert title here</title>
</head>
<body>
<font color="green"><h3>${message }</h3></font>
<%="fuck you, plealse login!" %>
<form action="${pageContext.request.contextPath }/servlet/LoginServlet" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="${cookie.username.value }"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" value="${cookie.password.value }"></td>
</tr>
<tr>
<td>
<input type="checkbox" name="remember" value="off">记住用户名与密码
</td>
</tr> <tr>
<td><input type="submit" value="登陆"></td>
</tr>
</table>
</form>
</body>
</html>

六:LoginServlet,查看用户登陆时所填写的信息是否与数据库文件中的相应数据符合,
若符合,则显示登陆成功,若不符合,则请求转发到登陆页面:

package com.itcode.controller;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import com.itcode.model.User;
import com.itcode.model.UserOperator; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
User user = new User();
try {
BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
UserOperator userOperator = new UserOperator();
User existUser = userOperator.login(user);
if(existUser == null){
response.getWriter().println("用户名或密码不正确,请重新输入!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}else{//登陆成功后,跳转到首页。在首 页要判断用户是否已经登陆
request.getSession().setAttribute("existUser",existUser);
if("on".equals(request.getParameter("remember"))){
//1.将用户名写进cookie
// Cookie usernameCookie = new Cookie("username",request.getParameter("username"));
Cookie usernameCookie = new Cookie("username",existUser.getUsername());
usernameCookie.setMaxAge(60*12);
usernameCookie.setPath("/");
response.addCookie(usernameCookie);
System.out.println("-----------22----------------");
//2.将密码写进cookie
// Cookie passwordCookie = new Cookie("password",request.getParameter("password"));
Cookie passwordCookie = new Cookie("password",existUser.getPassword());
passwordCookie.setMaxAge(60*12);
passwordCookie.setPath("/");
response.addCookie(passwordCookie);
System.out.println("-----------44----------------");
}
response.sendRedirect("/user/index.jsp");
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

七:注销成功的实现:

在登录成功后的页面写个注销的超链接,链接到注销Servlet,LogoutServlet.java

package com.itcode.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class LogoutServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// request.getSession().removeAttribute("existUser");
request.getSession().invalidate();
response.getWriter().println("fuck you have logout!");
response.sendRedirect("/user/index.jsp");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

八:为了显示效果,写个首页:


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>Insert title here</title>
</head>
<body>
<font color="red"><h2>这是首页</h2></font>
<hr>
<c:if test="${empty existUser }">
你好,你还没有登陆!<br/>
<a href="${pageContext.request.contextPath }/login.jsp">去登陆</a><br/>
<a href="${pageContext.request.contextPath }/regist.jsp">去注册</a><br/>
</c:if>
<c:if test="${not empty existUser }">
${existUser.username },你好,你已经成功登陆!<br/>
<a href="${pageContext.request.contextPath }/servlet/LogoutServlet">去注销</a>
</c:if>
</body>
</html>

javaWeb注册,登陆,注销功能的实现的更多相关文章

  1. 1_python小程序之实现用户的注册登陆验证功能

    python小程序之实现用户的注册登陆验证功能 程序扼要简述:  一.程序流程:1.程序开始2.判断本地文件/数据库是否已存在用户信息,存在则跳转到登陆,否则跳转到注册,注册成功后后跳转到登陆3.判断 ...

  2. XMPP实现登陆注销功能

    XMPP框架的下载与导入等问题请参照 —— XMPP框架的分析.导入及问题解决 DEMO ——XMPP即时通讯(已导入框架)密码:3a7n 这篇我们利用XMPP框架来实现一下登陆功能,先来介绍一下XM ...

  3. JavaWeb的登陆与注销功能

    JavaWeb 登录与注销 大致流程 一般我们在Web应用中 登录页面一般是以 login.jsp的首页 大致流程如下: 当我们在前台写入用户名和密码之后,点击登录按钮 会将表单提交给一个LoginS ...

  4. 「小程序JAVA实战」小程序我的个人信息-注销功能(42)

    转自:https://idig8.com/2018/09/06/xiaochengxujavashizhanxiaochengxuwodegerenxinxi-zhuxiaogongneng40/ 注 ...

  5. Django项目:CRM(客户关系管理系统)--53--44PerfectCRM实现账号快速注册登陆

    # gbacc_ajax_urls.py # ————————42PerfectCRM实现AJAX全局账号注册———————— from django.conf.urls import url fro ...

  6. JS实现注销功能

    JS实现注销功能,代码如下: <script> window.history.forward(1); </script> 这个代码的用法就是: 比如,我们此时有两个页面:Log ...

  7. HTML 事件(二) 事件的注册与注销

    本篇主要介绍HTML元素事件的注册.注销的方式. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流.事件委托 4. ...

  8. Android学习笔记(十一)BroadcastReceiver动态注册、注销示例

    在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...

  9. 快速体验 Laravel 自带的注册、登录功能

    快速体验 Laravel 自带的注册.登录功能 注册.登录经常是一件很伤脑筋的是,Laravel 提供了解决方案,可以直接使用它.试过之后,感觉真爽! 前提:本地已安装好了 PHP 运行环境.mysq ...

  10. 装饰器实现session登陆 验证功能

    装饰器 登陆验证功能 1.装饰器模板 from django.shortcuts import render, redirect, HttpResponse from django.conf impo ...

随机推荐

  1. 「ZJOI2009」多米诺骨牌

    「ZJOI2009」多米诺骨牌 题目描述 有一个n × m 的矩形表格,其中有一些位置有障碍.现在要在这个表格内 放一些1 × 2 或者2 × 1 的多米诺骨牌,使得任何两个多米诺骨牌没有重叠部分,任 ...

  2. luoguP3255 [JLOI2013]地形生成 动态规划

    出题人语文真好... 各不相同的标号和高度 = 各不相同的标号 + 单独的高度... 第一问比较简单,考虑从大到小插入,在相同情况下,按关键值从小到大插入 这样子,关键大的元素一定会影响到关键小的元素 ...

  3. fir.im Weekly - 嘘,关于***!

    上 Github 交友刷 StackOverflow 解惑,是攻城狮必备技能,加快打怪练级速度.关于,@左耳朵耗子 在微博上分享了一篇文档,轻一点教你建一个VPN服务器,重一点到教你在路由器上***, ...

  4. org.json.JSONObject and no properties discovered 错误解决

    自己在搭建SSM框架的时候(Spring + spring mvc + mybatis)报错内容如下: No serializer found for class org.json.JSONObjec ...

  5. Octopress + GitHub Page 搭建个人博客

    Tips:博客已搬家,新地址:http://wanxudong.top 首先说明两个关键术语: Octopress Octopress是基于 Jekyll 的博客框架.他们的关系就像 jQuery 与 ...

  6. MySQL遇到的一个卡库问题及对update的学习

    近日遇到个卡库的问题,环境是MySQL5.5.12,报错信息如下 ) and was aborted. There is a chan ce that your master is inconsist ...

  7. 以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewControllers方法即可达到效果了

    以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewC ...

  8. 使用 JMeter 完成常用的压力测试

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. pm2-web

    A web based monitor for PM2. Multiple hosts With the release of 0.11 pm2 no longer uses TCP sockets ...

  10. .Net线程问题解答

    基础篇 怎样创建一个线程 受托管的线程与 Windows线程 前台线程与后台线程 名为BeginXXX和EndXXX的方法是做什么用的 异步和多线程有什么关联 WinForm多线程编程篇 我的多线程W ...