一、使用servlet技术开发用户登陆功能

  在MySQL中准备一个user表,表中增加一条假数据

  

  

  使用Servlet实现用户登陆的功能

  

  用户登陆的<from>表单

  1.   <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
  2. <div class="input-group input-group-lg sepH_a">
  3. <span class="input-group-addon"><span class="icon_profile"></span></span>
  4. <input type="text" class="form-control" placeholder="Username" name="username">
  5. </div>
  6. <div class="input-group input-group-lg">
  7. <span class="input-group-addon"><span class="icon_key_alt"></span></span>
  8. <input type="password" class="form-control" placeholder="Password" name="password">
  9. </div>
  10.  
  11. <div>
  12. <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
  13. </div>
  14.  
  15. <div class="sepH_c text-right">
  16. <a href="javascript:void(0)" class="small">Forgot password?</a>
  17. </div>
  18. <div class="form-group sepH_c">
  19. <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
  20. </div>
  21.   </form>

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>登录/注册</title>
  8. <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
  9. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  10.  
  11. <!-- bootstrap framework -->
  12. <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
  13. <!-- elegant icons -->
  14. <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
  15. <!-- main stylesheet -->
  16. <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">
  17.  
  18. <!-- jQuery -->
  19. <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>
  20.  
  21. </head>
  22. <body class="login_page">
  23. <div class="login_header">
  24. </div>
  25. <div class="login_register_form">
  26. <div class="form_wrapper animated-short" id="login_form">
  27. <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
  28. <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
  29. <div class="input-group input-group-lg sepH_a">
  30. <span class="input-group-addon"><span class="icon_profile"></span></span>
  31. <input type="text" class="form-control" placeholder="Username" name="username">
  32. </div>
  33. <div class="input-group input-group-lg">
  34. <span class="input-group-addon"><span class="icon_key_alt"></span></span>
  35. <input type="password" class="form-control" placeholder="Password" name="password">
  36. </div>
  37.  
  38. <div>
  39. <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
  40. </div>
  41.  
  42. <div class="sepH_c text-right">
  43. <a href="javascript:void(0)" class="small">Forgot password?</a>
  44. </div>
  45. <div class="form-group sepH_c">
  46. <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
  47. </div>
  48. </form>
  49. </div>
  50. <div class="form_wrapper animated-short" id="register_form" style="display:none">
  51. <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
  52. <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
  53. <div class="input-group input-group-lg sepH_a">
  54. <span class="input-group-addon"><span class="icon_profile"></span></span>
  55. <input type="text" class="form-control" placeholder="Username" name="username">
  56. </div>
  57. <div class="input-group input-group-lg sepH_a">
  58. <span class="input-group-addon"><span class="icon_key_alt"></span></span>
  59. <input type="password" class="form-control" placeholder="Password" name="password">
  60. </div>
  61. <div class="input-group input-group-lg sepH_c">
  62. <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
  63. <input type="email" class="form-control" placeholder="Email" name="email">
  64. </div>
  65. <div class="form-group sepH_c">
  66. <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
  67. </div>
  68. </form>
  69. </div>
  70. </div>
  71.  
  72. <script>
  73. $(function () {
  74. $('.form-switch').on('click', function (e) {
  75. e.preventDefault();
  76.  
  77. var $switchTo = $(this).data('switchForm'),
  78. $thisForm = $(this).closest('.form_wrapper');
  79.  
  80. $('.form_wrapper').removeClass('fadeInUpBig');
  81. $thisForm.addClass('fadeOutDownBig');
  82.  
  83. setTimeout(function () {
  84. $thisForm.removeClass('fadeOutDownBig').hide();
  85. $('#' + $switchTo).show().addClass('fadeInUpBig');
  86. }, 300);
  87.  
  88. });
  89. });
  90. </script>
  91. </body>
  92. </html>

login_page.jsp

  1. package com.Gary.bean;
  2.  
  3. public class User {
  4.  
  5. private Integer u_id;
  6. private String u_username;
  7. private String u_password;
  8.  
  9. public Integer getU_id() {
  10. return u_id;
  11. }
  12. public void setU_id(Integer u_id) {
  13. this.u_id = u_id;
  14. }
  15. public String getU_username() {
  16. return u_username;
  17. }
  18. public void setU_username(String u_username) {
  19. this.u_username = u_username;
  20. }
  21. public String getU_password() {
  22. return u_password;
  23. }
  24. public void setU_password(String u_password) {
  25. this.u_password = u_password;
  26. }
  27.  
  28. }

User.java

  1. package com.Gary.dao;
  2.  
  3. import java.beans.PropertyVetoException;
  4. import java.sql.SQLException;
  5.  
  6. import org.apache.commons.dbutils.QueryRunner;
  7. import org.apache.commons.dbutils.handlers.BeanHandler;
  8.  
  9. import com.Gary.bean.User;
  10. import com.mchange.v2.c3p0.ComboPooledDataSource;
  11.  
  12. public class UserDao {
  13.  
  14. private static ComboPooledDataSource dataSource;
  15.  
  16. static {
  17. //配置c3p0
  18. try {
  19. //使用c3p0链接数据库
  20. dataSource = new ComboPooledDataSource();
  21. dataSource.setDriverClass("com.mysql.jdbc.Driver");
  22. dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
  23. dataSource.setUser("root");
  24. dataSource.setPassword("123456");
  25. } catch (PropertyVetoException e) {
  26.  
  27. e.printStackTrace();
  28. }
  29. }
  30.  
  31. //通过数据库获取用户
  32. public User getUserByInfo(User u) throws SQLException {
  33.  
  34. //使用dbutils操作数据库 查询并返回用户对象
  35. QueryRunner qr = new QueryRunner(dataSource);
  36.  
  37. String sql ="select * from user where u_username = ? and u_password = ?";
  38.  
  39. return qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());
  40.  
  41. }
  42.  
  43. }

UserDao.java

  1. package com.Gary.service;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import com.Gary.bean.User;
  6. import com.Gary.dao.UserDao;
  7.  
  8. public class UserService{
  9.  
  10. private UserDao ud= new UserDao();
  11.  
  12. public User getUserByInfo(User u) throws SQLException {
  13.  
  14. return ud.getUserByInfo(u);
  15. }
  16.  
  17. }

UserService.java

  1. package com.Gary.web;
  2.  
  3. import java.io.IOException;
  4. import java.sql.SQLException;
  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. import javax.servlet.http.HttpSession;
  12.  
  13. import com.Gary.bean.User;
  14. import com.Gary.service.UserService;
  15.  
  16. @WebServlet("/userLogin")
  17. public class UserLoginServlet extends HttpServlet {
  18. private static final long serialVersionUID = 1L;
  19.  
  20. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21.  
  22. //接收表单数据
  23. String username = request.getParameter("username");
  24. String password = request.getParameter("password");
  25.  
  26. //封装成User对象
  27. User u = new User();
  28. u.setU_username(username);
  29. u.setU_password(password);
  30.  
  31. //调用service方法验证
  32. UserService us = new UserService();
  33. User loginUser = null;
  34. try {
  35. loginUser = us.getUserByInfo(u);
  36. } catch (SQLException e) {
  37.  
  38. e.printStackTrace();
  39. }
  40.  
  41. //根据用户验证结果进行操作
  42. if(loginUser == null)
  43. {
  44. //验证成功登陆,并重定向到index.jsp
  45. request.setAttribute("errorMsg", "用户名或密码错误");
  46. request.getRequestDispatcher("/login_page.jsp").forward(request, response);
  47. }else {
  48. //验证失败,重定向到login_page.jsp
  49. HttpSession session = request.getSession();
  50. session.setAttribute("user", loginUser);
  51. response.sendRedirect(request.getContextPath()+"/index.jsp");
  52. }
  53.  
  54. }
  55.  
  56. public UserLoginServlet() {
  57. super();
  58.  
  59. }
  60.  
  61. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  62. doGet(request, response);
  63.  
  64. }
  65.  
  66. }

UserLoginServlet.java

  修改项目

  利用Spring改造项目

  导入Spring的核心包,并配置Spring随项目启动

  

  1. package com.Gary.bean;
  2.  
  3. public class User {
  4.  
  5. private Integer u_id;
  6. private String u_username;
  7. private String u_password;
  8.  
  9. public Integer getU_id() {
  10. return u_id;
  11. }
  12. public void setU_id(Integer u_id) {
  13. this.u_id = u_id;
  14. }
  15. public String getU_username() {
  16. return u_username;
  17. }
  18. public void setU_username(String u_username) {
  19. this.u_username = u_username;
  20. }
  21. public String getU_password() {
  22. return u_password;
  23. }
  24. public void setU_password(String u_password) {
  25. this.u_password = u_password;
  26. }
  27.  
  28. }

User.java

  1. package com.Gary.dao;
  2.  
  3. import java.beans.PropertyVetoException;
  4. import java.sql.SQLException;
  5.  
  6. import org.apache.commons.dbutils.QueryRunner;
  7. import org.apache.commons.dbutils.handlers.BeanHandler;
  8.  
  9. import com.Gary.bean.User;
  10. import com.mchange.v2.c3p0.ComboPooledDataSource;
  11.  
  12. public class UserDao {
  13.  
  14. /*
  15. private static ComboPooledDataSource dataSource;
  16.  
  17. static {
  18. //配置c3p0
  19. try {
  20. //使用c3p0链接数据库
  21. dataSource = new ComboPooledDataSource();
  22. dataSource.setDriverClass("com.mysql.jdbc.Driver");
  23. dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
  24. dataSource.setUser("root");
  25. dataSource.setPassword("123456");
  26. } catch (PropertyVetoException e) {
  27.  
  28. e.printStackTrace();
  29. }
  30. }
  31. */
  32.  
  33. private ComboPooledDataSource dataSource;
  34.  
  35. public void setDataSource(ComboPooledDataSource dataSource) {
  36. this.dataSource = dataSource;
  37. }
  38.  
  39. //通过数据库获取用户
  40. public User getUserByInfo(User u) throws SQLException {
  41.  
  42. //使用dbutils操作数据库 查询并返回用户对象
  43. QueryRunner qr = new QueryRunner(dataSource);
  44.  
  45. String sql ="select * from user where u_username = ? and u_password = ?";
  46.  
  47. return qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());
  48.  
  49. }
  50.  
  51. }

UserDao.java

  1. package com.Gary.service;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import com.Gary.bean.User;
  6. import com.Gary.dao.UserDao;
  7.  
  8. public class UserService{
  9.  
  10. private UserDao ud= new UserDao();
  11.  
  12. public User getUserByInfo(User u) throws SQLException {
  13.  
  14. return ud.getUserByInfo(u);
  15. }
  16.  
  17. public void setUd(UserDao ud) {
  18. this.ud = ud;
  19. }
  20.  
  21. }

UserService.java

  1. package com.Gary.web;
  2.  
  3. import java.io.IOException;
  4. import java.sql.SQLException;
  5.  
  6. import javax.servlet.ServletContext;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import javax.servlet.http.HttpSession;
  13.  
  14. import org.springframework.context.ApplicationContext;
  15. import org.springframework.context.support.ClassPathXmlApplicationContext;
  16. import org.springframework.web.context.WebApplicationContext;
  17. import org.springframework.web.context.support.WebApplicationContextUtils;
  18.  
  19. import com.Gary.bean.User;
  20. import com.Gary.service.UserService;
  21.  
  22. @WebServlet("/userLogin")
  23. public class UserLoginServlet extends HttpServlet {
  24. private static final long serialVersionUID = 1L;
  25.  
  26. private UserService us;
  27.  
  28. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  29.  
  30. //接收表单数据
  31. String username = request.getParameter("username");
  32. String password = request.getParameter("password");
  33.  
  34. //封装成User对象
  35. User u = new User();
  36. u.setU_username(username);
  37. u.setU_password(password);
  38.  
  39. //通过容器获取userService
  40. /*ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  41. us = (UserService) ac.getBean("userService");*/
  42.  
  43. //在web项目中我们只需要一个spring容器
  44.  
  45. //application域
  46.  
  47. //ServletContext() 生命周期 随着web项目启动而创建 随着web项目关闭而销毁
  48.  
  49. //ServletContextListener 可以通过配置监听器来达到我们的需求,在web项目创建时候创建容器,销毁时候关闭spring容器
  50. WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
  51. us = (UserService)wac.getBean("userService");
  52.  
  53. //调用service方法验证
  54. User loginUser = null;
  55. try {
  56. loginUser = us.getUserByInfo(u);
  57. } catch (SQLException e) {
  58.  
  59. e.printStackTrace();
  60. }
  61.  
  62. //根据用户验证结果进行操作
  63. if(loginUser == null)
  64. {
  65. //验证成功登陆,并重定向到index.jsp
  66. request.setAttribute("errorMsg", "用户名或密码错误");
  67. request.getRequestDispatcher("/login_page.jsp").forward(request, response);
  68. }else {
  69. //验证失败,重定向到login_page.jsp
  70. HttpSession session = request.getSession();
  71. session.setAttribute("user", loginUser);
  72. response.sendRedirect(request.getContextPath()+"/index.jsp");
  73. }
  74.  
  75. }
  76.  
  77. public UserLoginServlet() {
  78. super();
  79.  
  80. }
  81.  
  82. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  83. doGet(request, response);
  84.  
  85. }
  86.  
  87. }

UserLoginServlet.java

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
  5.  
  6. <!-- 配置 dataSource -->
  7. <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  8. <property name="driverClass" value="com.mysql.jdbc.Driver"/>
  9. <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm_spring"/>
  10. <property name="user" value="root"/>
  11. <property name="password" value="123456"/>
  12. </bean>
  13.  
  14. <!-- 配置 dao -->
  15. <bean name="userDao" class="com.Gary.dao.UserDao">
  16. <property name="dataSource" ref="dataSource"/>
  17. </bean>
  18.  
  19. <!-- 配置 service -->
  20. <bean name="userService" class="com.Gary.service.UserService">
  21. <property name="ud" ref="userDao"/>
  22. </bean>
  23.  
  24. </beans>

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <display-name>ssm_spring_servlet</display-name>
  4.  
  5. <!-- 配置监听器,在web项目启动后让spring启动 -->
  6. <listener>
  7. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  8. </listener>
  9. <!-- 读取spring的配置文件 -->
  10. <context-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <param-value>classpath:applicationContext.xml</param-value>
  13. </context-param>
  14.  
  15. <welcome-file-list>
  16. <welcome-file>index.html</welcome-file>
  17. <welcome-file>index.htm</welcome-file>
  18. <welcome-file>index.jsp</welcome-file>
  19. <welcome-file>default.html</welcome-file>
  20. <welcome-file>default.htm</welcome-file>
  21. <welcome-file>default.jsp</welcome-file>
  22. </welcome-file-list>
  23. </web-app>

web.xml

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>登录/注册</title>
  8. <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
  9. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  10.  
  11. <!-- bootstrap framework -->
  12. <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
  13. <!-- elegant icons -->
  14. <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
  15. <!-- main stylesheet -->
  16. <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">
  17.  
  18. <!-- jQuery -->
  19. <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>
  20.  
  21. </head>
  22. <body class="login_page">
  23. <div class="login_header">
  24. </div>
  25. <div class="login_register_form">
  26. <div class="form_wrapper animated-short" id="login_form">
  27. <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
  28. <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
  29. <div class="input-group input-group-lg sepH_a">
  30. <span class="input-group-addon"><span class="icon_profile"></span></span>
  31. <input type="text" class="form-control" placeholder="Username" name="username">
  32. </div>
  33. <div class="input-group input-group-lg">
  34. <span class="input-group-addon"><span class="icon_key_alt"></span></span>
  35. <input type="password" class="form-control" placeholder="Password" name="password">
  36. </div>
  37.  
  38. <div>
  39. <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
  40. </div>
  41.  
  42. <div class="sepH_c text-right">
  43. <a href="javascript:void(0)" class="small">Forgot password?</a>
  44. </div>
  45. <div class="form-group sepH_c">
  46. <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
  47. </div>
  48. </form>
  49. </div>
  50. <div class="form_wrapper animated-short" id="register_form" style="display:none">
  51. <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
  52. <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
  53. <div class="input-group input-group-lg sepH_a">
  54. <span class="input-group-addon"><span class="icon_profile"></span></span>
  55. <input type="text" class="form-control" placeholder="Username" name="username">
  56. </div>
  57. <div class="input-group input-group-lg sepH_a">
  58. <span class="input-group-addon"><span class="icon_key_alt"></span></span>
  59. <input type="password" class="form-control" placeholder="Password" name="password">
  60. </div>
  61. <div class="input-group input-group-lg sepH_c">
  62. <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
  63. <input type="email" class="form-control" placeholder="Email" name="email">
  64. </div>
  65. <div class="form-group sepH_c">
  66. <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
  67. </div>
  68. </form>
  69. </div>
  70. </div>
  71.  
  72. <script>
  73. $(function () {
  74. $('.form-switch').on('click', function (e) {
  75. e.preventDefault();
  76.  
  77. var $switchTo = $(this).data('switchForm'),
  78. $thisForm = $(this).closest('.form_wrapper');
  79.  
  80. $('.form_wrapper').removeClass('fadeInUpBig');
  81. $thisForm.addClass('fadeOutDownBig');
  82.  
  83. setTimeout(function () {
  84. $thisForm.removeClass('fadeOutDownBig').hide();
  85. $('#' + $switchTo).show().addClass('fadeInUpBig');
  86. }, 300);
  87.  
  88. });
  89. });
  90. </script>
  91. </body>
  92. </html>

login_page.jsp

JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中的更多相关文章

  1. Spring框架系列(2) - Spring简单例子引入Spring要点

    上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...

  2. Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计

    在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解.本文将帮助你站在设计者的角度去看IOC最顶层的结构设计.@pdai Spring框架系列(6) - Spring IOC实现原理详解 ...

  3. Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程

    上文,我们看了IOC设计要点和设计结构:紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的. ...

  4. Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)

    上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...

  5. Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现

    前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...

  6. Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建

    上文我们介绍了Spring AOP原理解析的切面实现过程(将切面类的所有切面方法根据使用的注解生成对应Advice,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor).本文在此基 ...

  7. Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现

    我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理.@pdai Spring框架系列 ...

  8. Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现

    上文我们学习了SpringAOP Cglib动态代理的实现,本文主要是SpringAOP JDK动态代理的案例和实现部分.@pdai Spring框架系列(12) - Spring AOP实现原理详解 ...

  9. Spring 框架系列之 JDBC 整合实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring框架整合 DAO 模板 JDBC:org.springframework.jdb ...

随机推荐

  1. (九)springmvc之json的处理(服务端发送json数据到客户端)

    一.json处理方法有两种 1:导入Spring需要json的jar包.(本例使用) 使用@ResponseBody该注解用于将Controller的方法返回的对象,通过HttpMessageConv ...

  2. SQL Server 2017命令创建新账户(test-user),并分配数据库权限

    -- 1. 创建登录账号USE [master];GOCREATE LOGIN [test-user] WITH PASSWORD = 'xysu7SZ193SNX6E{{HxubPE3}vr',DE ...

  3. 在sublime3中运行python文件

    1.首先下载Sublime和Python,安装Python环境 注意:如果不想动手亲自配置Python环境安装的时候环境变量,请在安装的界面给Add Python 3.5 To Path前面打上对号. ...

  4. JVM学习笔记——类加载过程

    JVM学习笔记——类加载过程 类加载模型——双亲委派模型(Parents Delegation Model)也可称为“溯源委派加载模型” Java的类加载器是一个运行时核心基础设施模块,主要是启动之初 ...

  5. Error:Unable to start the daemon process. This problem might be caused by incorrect configuration of

    我试了修改或者配置gradle文件没有成功解决的 ,所以试了这个解决方案 试了下这个是可以解决的. 变量名   _JAVA_OPTIONS 变量值   -Djava.net.preferIPv4Sta ...

  6. Computer Vision_33_SIFT:PCA-SIFT A More Distinctive Representation for Local Image Descriptors——2004

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  7. win10锁屏壁纸文件夹Assets中无文件问题的解决方法

    一.前言 win10在锁屏时会有很多精美的壁纸,在网上查找到win10锁屏壁纸存放目录为 : C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windo ...

  8. java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present

    @Controller@ComponentScan@Configuration@EnableScheduling@EnableAutoConfiguration(exclude={DataSource ...

  9. java-利用BitSet查找素数

    高效存储为序列可以使用位积,由于位集将位包装在字节里,所以位集要比使用Boolean对象的ArrayList更高效. 自己的代码,素数是false public class Sieve { @Test ...

  10. 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 ...