JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中
一、使用servlet技术开发用户登陆功能
在MySQL中准备一个user表,表中增加一条假数据
使用Servlet实现用户登陆的功能
用户登陆的<from>表单
- <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_profile"></span></span>
- <input type="text" class="form-control" placeholder="Username" name="username">
- </div>
- <div class="input-group input-group-lg">
- <span class="input-group-addon"><span class="icon_key_alt"></span></span>
- <input type="password" class="form-control" placeholder="Password" name="password">
- </div>
- <div>
- <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
- </div>
- <div class="sepH_c text-right">
- <a href="javascript:void(0)" class="small">Forgot password?</a>
- </div>
- <div class="form-group sepH_c">
- <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
- </div>
- </form>
- <%@ 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 charset="UTF-8">
- <title>登录/注册</title>
- <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <!-- bootstrap framework -->
- <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
- <!-- elegant icons -->
- <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
- <!-- main stylesheet -->
- <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">
- <!-- jQuery -->
- <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>
- </head>
- <body class="login_page">
- <div class="login_header">
- </div>
- <div class="login_register_form">
- <div class="form_wrapper animated-short" id="login_form">
- <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
- <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_profile"></span></span>
- <input type="text" class="form-control" placeholder="Username" name="username">
- </div>
- <div class="input-group input-group-lg">
- <span class="input-group-addon"><span class="icon_key_alt"></span></span>
- <input type="password" class="form-control" placeholder="Password" name="password">
- </div>
- <div>
- <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
- </div>
- <div class="sepH_c text-right">
- <a href="javascript:void(0)" class="small">Forgot password?</a>
- </div>
- <div class="form-group sepH_c">
- <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
- </div>
- </form>
- </div>
- <div class="form_wrapper animated-short" id="register_form" style="display:none">
- <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
- <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_profile"></span></span>
- <input type="text" class="form-control" placeholder="Username" name="username">
- </div>
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_key_alt"></span></span>
- <input type="password" class="form-control" placeholder="Password" name="password">
- </div>
- <div class="input-group input-group-lg sepH_c">
- <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
- <input type="email" class="form-control" placeholder="Email" name="email">
- </div>
- <div class="form-group sepH_c">
- <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
- </div>
- </form>
- </div>
- </div>
- <script>
- $(function () {
- $('.form-switch').on('click', function (e) {
- e.preventDefault();
- var $switchTo = $(this).data('switchForm'),
- $thisForm = $(this).closest('.form_wrapper');
- $('.form_wrapper').removeClass('fadeInUpBig');
- $thisForm.addClass('fadeOutDownBig');
- setTimeout(function () {
- $thisForm.removeClass('fadeOutDownBig').hide();
- $('#' + $switchTo).show().addClass('fadeInUpBig');
- }, 300);
- });
- });
- </script>
- </body>
- </html>
login_page.jsp
- package com.Gary.bean;
- public class User {
- private Integer u_id;
- private String u_username;
- private String u_password;
- public Integer getU_id() {
- return u_id;
- }
- public void setU_id(Integer u_id) {
- this.u_id = u_id;
- }
- public String getU_username() {
- return u_username;
- }
- public void setU_username(String u_username) {
- this.u_username = u_username;
- }
- public String getU_password() {
- return u_password;
- }
- public void setU_password(String u_password) {
- this.u_password = u_password;
- }
- }
User.java
- package com.Gary.dao;
- import java.beans.PropertyVetoException;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.BeanHandler;
- import com.Gary.bean.User;
- import com.mchange.v2.c3p0.ComboPooledDataSource;
- public class UserDao {
- private static ComboPooledDataSource dataSource;
- static {
- //配置c3p0
- try {
- //使用c3p0链接数据库
- dataSource = new ComboPooledDataSource();
- dataSource.setDriverClass("com.mysql.jdbc.Driver");
- dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
- dataSource.setUser("root");
- dataSource.setPassword("123456");
- } catch (PropertyVetoException e) {
- e.printStackTrace();
- }
- }
- //通过数据库获取用户
- public User getUserByInfo(User u) throws SQLException {
- //使用dbutils操作数据库 查询并返回用户对象
- QueryRunner qr = new QueryRunner(dataSource);
- String sql ="select * from user where u_username = ? and u_password = ?";
- return qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());
- }
- }
UserDao.java
- package com.Gary.service;
- import java.sql.SQLException;
- import com.Gary.bean.User;
- import com.Gary.dao.UserDao;
- public class UserService{
- private UserDao ud= new UserDao();
- public User getUserByInfo(User u) throws SQLException {
- return ud.getUserByInfo(u);
- }
- }
UserService.java
- package com.Gary.web;
- import java.io.IOException;
- import java.sql.SQLException;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import com.Gary.bean.User;
- import com.Gary.service.UserService;
- @WebServlet("/userLogin")
- public class UserLoginServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- //接收表单数据
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- //封装成User对象
- User u = new User();
- u.setU_username(username);
- u.setU_password(password);
- //调用service方法验证
- UserService us = new UserService();
- User loginUser = null;
- try {
- loginUser = us.getUserByInfo(u);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- //根据用户验证结果进行操作
- if(loginUser == null)
- {
- //验证成功登陆,并重定向到index.jsp
- request.setAttribute("errorMsg", "用户名或密码错误");
- request.getRequestDispatcher("/login_page.jsp").forward(request, response);
- }else {
- //验证失败,重定向到login_page.jsp
- HttpSession session = request.getSession();
- session.setAttribute("user", loginUser);
- response.sendRedirect(request.getContextPath()+"/index.jsp");
- }
- }
- public UserLoginServlet() {
- super();
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
UserLoginServlet.java
修改项目
利用Spring改造项目
导入Spring的核心包,并配置Spring随项目启动
- package com.Gary.bean;
- public class User {
- private Integer u_id;
- private String u_username;
- private String u_password;
- public Integer getU_id() {
- return u_id;
- }
- public void setU_id(Integer u_id) {
- this.u_id = u_id;
- }
- public String getU_username() {
- return u_username;
- }
- public void setU_username(String u_username) {
- this.u_username = u_username;
- }
- public String getU_password() {
- return u_password;
- }
- public void setU_password(String u_password) {
- this.u_password = u_password;
- }
- }
User.java
- package com.Gary.dao;
- import java.beans.PropertyVetoException;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.BeanHandler;
- import com.Gary.bean.User;
- import com.mchange.v2.c3p0.ComboPooledDataSource;
- public class UserDao {
- /*
- private static ComboPooledDataSource dataSource;
- static {
- //配置c3p0
- try {
- //使用c3p0链接数据库
- dataSource = new ComboPooledDataSource();
- dataSource.setDriverClass("com.mysql.jdbc.Driver");
- dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
- dataSource.setUser("root");
- dataSource.setPassword("123456");
- } catch (PropertyVetoException e) {
- e.printStackTrace();
- }
- }
- */
- private ComboPooledDataSource dataSource;
- public void setDataSource(ComboPooledDataSource dataSource) {
- this.dataSource = dataSource;
- }
- //通过数据库获取用户
- public User getUserByInfo(User u) throws SQLException {
- //使用dbutils操作数据库 查询并返回用户对象
- QueryRunner qr = new QueryRunner(dataSource);
- String sql ="select * from user where u_username = ? and u_password = ?";
- return qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());
- }
- }
UserDao.java
- package com.Gary.service;
- import java.sql.SQLException;
- import com.Gary.bean.User;
- import com.Gary.dao.UserDao;
- public class UserService{
- private UserDao ud= new UserDao();
- public User getUserByInfo(User u) throws SQLException {
- return ud.getUserByInfo(u);
- }
- public void setUd(UserDao ud) {
- this.ud = ud;
- }
- }
UserService.java
- package com.Gary.web;
- import java.io.IOException;
- import java.sql.SQLException;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.web.context.WebApplicationContext;
- import org.springframework.web.context.support.WebApplicationContextUtils;
- import com.Gary.bean.User;
- import com.Gary.service.UserService;
- @WebServlet("/userLogin")
- public class UserLoginServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- private UserService us;
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- //接收表单数据
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- //封装成User对象
- User u = new User();
- u.setU_username(username);
- u.setU_password(password);
- //通过容器获取userService
- /*ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
- us = (UserService) ac.getBean("userService");*/
- //在web项目中我们只需要一个spring容器
- //application域
- //ServletContext() 生命周期 随着web项目启动而创建 随着web项目关闭而销毁
- //ServletContextListener 可以通过配置监听器来达到我们的需求,在web项目创建时候创建容器,销毁时候关闭spring容器
- WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
- us = (UserService)wac.getBean("userService");
- //调用service方法验证
- User loginUser = null;
- try {
- loginUser = us.getUserByInfo(u);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- //根据用户验证结果进行操作
- if(loginUser == null)
- {
- //验证成功登陆,并重定向到index.jsp
- request.setAttribute("errorMsg", "用户名或密码错误");
- request.getRequestDispatcher("/login_page.jsp").forward(request, response);
- }else {
- //验证失败,重定向到login_page.jsp
- HttpSession session = request.getSession();
- session.setAttribute("user", loginUser);
- response.sendRedirect(request.getContextPath()+"/index.jsp");
- }
- }
- public UserLoginServlet() {
- super();
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
UserLoginServlet.java
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
- <!-- 配置 dataSource -->
- <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="com.mysql.jdbc.Driver"/>
- <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm_spring"/>
- <property name="user" value="root"/>
- <property name="password" value="123456"/>
- </bean>
- <!-- 配置 dao -->
- <bean name="userDao" class="com.Gary.dao.UserDao">
- <property name="dataSource" ref="dataSource"/>
- </bean>
- <!-- 配置 service -->
- <bean name="userService" class="com.Gary.service.UserService">
- <property name="ud" ref="userDao"/>
- </bean>
- </beans>
applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
- <display-name>ssm_spring_servlet</display-name>
- <!-- 配置监听器,在web项目启动后让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>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
web.xml
- <%@ 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 charset="UTF-8">
- <title>登录/注册</title>
- <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <!-- bootstrap framework -->
- <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
- <!-- elegant icons -->
- <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
- <!-- main stylesheet -->
- <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">
- <!-- jQuery -->
- <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>
- </head>
- <body class="login_page">
- <div class="login_header">
- </div>
- <div class="login_register_form">
- <div class="form_wrapper animated-short" id="login_form">
- <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
- <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_profile"></span></span>
- <input type="text" class="form-control" placeholder="Username" name="username">
- </div>
- <div class="input-group input-group-lg">
- <span class="input-group-addon"><span class="icon_key_alt"></span></span>
- <input type="password" class="form-control" placeholder="Password" name="password">
- </div>
- <div>
- <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
- </div>
- <div class="sepH_c text-right">
- <a href="javascript:void(0)" class="small">Forgot password?</a>
- </div>
- <div class="form-group sepH_c">
- <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
- </div>
- </form>
- </div>
- <div class="form_wrapper animated-short" id="register_form" style="display:none">
- <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
- <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_profile"></span></span>
- <input type="text" class="form-control" placeholder="Username" name="username">
- </div>
- <div class="input-group input-group-lg sepH_a">
- <span class="input-group-addon"><span class="icon_key_alt"></span></span>
- <input type="password" class="form-control" placeholder="Password" name="password">
- </div>
- <div class="input-group input-group-lg sepH_c">
- <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
- <input type="email" class="form-control" placeholder="Email" name="email">
- </div>
- <div class="form-group sepH_c">
- <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
- </div>
- </form>
- </div>
- </div>
- <script>
- $(function () {
- $('.form-switch').on('click', function (e) {
- e.preventDefault();
- var $switchTo = $(this).data('switchForm'),
- $thisForm = $(this).closest('.form_wrapper');
- $('.form_wrapper').removeClass('fadeInUpBig');
- $thisForm.addClass('fadeOutDownBig');
- setTimeout(function () {
- $thisForm.removeClass('fadeOutDownBig').hide();
- $('#' + $switchTo).show().addClass('fadeInUpBig');
- }, 300);
- });
- });
- </script>
- </body>
- </html>
login_page.jsp
JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中的更多相关文章
- Spring框架系列(2) - Spring简单例子引入Spring要点
上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...
- Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计
在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解.本文将帮助你站在设计者的角度去看IOC最顶层的结构设计.@pdai Spring框架系列(6) - Spring IOC实现原理详解 ...
- Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程
上文,我们看了IOC设计要点和设计结构:紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的. ...
- Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)
上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...
- Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现
前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...
- Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建
上文我们介绍了Spring AOP原理解析的切面实现过程(将切面类的所有切面方法根据使用的注解生成对应Advice,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor).本文在此基 ...
- Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现
我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理.@pdai Spring框架系列 ...
- Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现
上文我们学习了SpringAOP Cglib动态代理的实现,本文主要是SpringAOP JDK动态代理的案例和实现部分.@pdai Spring框架系列(12) - Spring AOP实现原理详解 ...
- Spring 框架系列之 JDBC 整合实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...
随机推荐
- (九)springmvc之json的处理(服务端发送json数据到客户端)
一.json处理方法有两种 1:导入Spring需要json的jar包.(本例使用) 使用@ResponseBody该注解用于将Controller的方法返回的对象,通过HttpMessageConv ...
- SQL Server 2017命令创建新账户(test-user),并分配数据库权限
-- 1. 创建登录账号USE [master];GOCREATE LOGIN [test-user] WITH PASSWORD = 'xysu7SZ193SNX6E{{HxubPE3}vr',DE ...
- 在sublime3中运行python文件
1.首先下载Sublime和Python,安装Python环境 注意:如果不想动手亲自配置Python环境安装的时候环境变量,请在安装的界面给Add Python 3.5 To Path前面打上对号. ...
- JVM学习笔记——类加载过程
JVM学习笔记——类加载过程 类加载模型——双亲委派模型(Parents Delegation Model)也可称为“溯源委派加载模型” Java的类加载器是一个运行时核心基础设施模块,主要是启动之初 ...
- Error:Unable to start the daemon process. This problem might be caused by incorrect configuration of
我试了修改或者配置gradle文件没有成功解决的 ,所以试了这个解决方案 试了下这个是可以解决的. 变量名 _JAVA_OPTIONS 变量值 -Djava.net.preferIPv4Sta ...
- Computer Vision_33_SIFT:PCA-SIFT A More Distinctive Representation for Local Image Descriptors——2004
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- win10锁屏壁纸文件夹Assets中无文件问题的解决方法
一.前言 win10在锁屏时会有很多精美的壁纸,在网上查找到win10锁屏壁纸存放目录为 : C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windo ...
- java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present
@Controller@ComponentScan@Configuration@EnableScheduling@EnableAutoConfiguration(exclude={DataSource ...
- java-利用BitSet查找素数
高效存储为序列可以使用位积,由于位集将位包装在字节里,所以位集要比使用Boolean对象的ArrayList更高效. 自己的代码,素数是false public class Sieve { @Test ...
- mysql 5.5 编码设置为utf8 转载自:http://outofcontrol.ca/thoughts/comments/change-mysql-5.5-default-character-set-to-utf8
Change MySQL 5.5 default character-set to UTF8 连接里是linux下的 在window下my.ini Add under [client] the fo ...