美高梅开户-美高梅官方网站开户

您的位置:美高梅开户 > 美高梅官方网站开户 > 用户登录功能实现,登陆实例

用户登录功能实现,登陆实例

发布时间:2019-10-06 09:56编辑:美高梅官方网站开户浏览(90)

    jsp&servlet初体验——用户登录功能实现,

      近来无事,复习复习Spring相关知识,从《Spring企业应用开发实战》这本书开始。

    数据库准备—创建db_login数据库  t_user表

     

      本文为学习《Spring企业应用开发实战》总结,著作权归原作者。

    1、创建web工程

    一、用Maven建立web项目

      此处参考 张果 博客,在此表示感谢。原文地址:

    1.点击“File”->“New”->"Other"->输入“Maven”,新建一个“Maven Project”,如下图所示:

    图片 1

    2.请勾选“Create a simple project”,创建一个简单的项目,不使用模板。也可以使用模板,选择WebApp,不过这里就不应该勾选。如下图所示:

    图片 2

     

    3.填写好包名、项目名,选择打包类型为:war,如下图所示:

    图片 3

     

    4.项目创建好后可能会发现有错误,选择项目,右键“属性properties”->"层面Project Facets"->"Java"修改版本号为1.8,默认为1.5;点击“Ok”保存后关闭。如下图所示:

    图片 4

     

    5.重复上一个步骤,反勾Dynamic Web Module,将项目暂时变成非Web项目。点击“Ok”保存后关闭。

    图片 5

    6.重复上一步骤,再进层面属性,勾选“Dynamic Web Module”选择Version为3.0。点击左下角的超链接“Further Configuration available...“。

    图片 6

    7.勾选“Generate web.xml deployment descriptor”生成web.xml部署描述文件。点击“Ok”保存后关闭。

    图片 7

     

    8.将生成的WebContent目录下的两个文件夹“META-INF”与“WEB-INF”复制到src/main/webapp目录下。

    图片 8

     

    9.删除WebContent目录。

    图片 9

     

    10.删除后会发现项目的pom.xml文件报错,是因为找不到指定位置的web.xml文件引起的。再进入项目的属性,选择“Deployment Assembly”项目部署项,删除“src/test/java”、“src/test/resources”与“WebContent”目录,因为这三项不需要部署出去。

    图片 10

     

    11.点击“Add添加”后选择“Folder文件夹”为项目的最终部署结果指定Web内容根文件夹。

    图片 11

     

    12.选择srcmainwebapp目录为目标目录,点击“Finish完成”保存并关闭。

    图片 12

     

    13.如果此时项目还报错,随便修改pom.xml文件后保存后应该错误会消失。

    14.此后项目运行需要添加tomcat运行环境就不赘述了。

    2、创建用户model   user.java

     1 package com.gxy.model;
     2 
     3 public class User {
     4     private int id;
     5     private String userName;
     6     private String password;
     7     
     8     public User() {
     9         super();
    10     }
    11     
    12     
    13     public User(String userName, String password) {
    14         super();
    15         this.userName = userName;
    16         this.password = password;
    17     }
    18 
    19 
    20     public int getId() {
    21         return id;
    22     }
    23     public void setId(int id) {
    24         this.id = id;
    25     }
    26     public String getUserName() {
    27         return userName;
    28     }
    29     public void setUserName(String userName) {
    30         this.userName = userName;
    31     }
    32     public String getPassword() {
    33         return password;
    34     }
    35     public void setPassword(String password) {
    36         this.password = password;
    37     }
    38 
    39 }
    

     二、类包规划,添加依赖,数据库准备

    1.类包规划

    图片 13

    2.pom.xml中添加lib依赖

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.adam</groupId>
      5     <artifactId>Chapter2</artifactId>
      6     <version>0.0.1-SNAPSHOT</version>
      7     <packaging>war</packaging>
      8     <properties>
      9         <!-- springframe 版本控制 -->
     10         <spring.version>4.1.1.RELEASE</spring.version>
     11     </properties>
     12 
     13     <dependencies>
     14         <!-- springframe start -->
     15         <dependency>
     16             <groupId>org.springframework</groupId>
     17             <artifactId>spring-core</artifactId>
     18             <version>${spring.version}</version>
     19         </dependency>
     20 
     21         <dependency>
     22             <groupId>org.springframework</groupId>
     23             <artifactId>spring-web</artifactId>
     24             <version>${spring.version}</version>
     25         </dependency>
     26 
     27         <dependency>
     28             <groupId>org.springframework</groupId>
     29             <artifactId>spring-oxm</artifactId>
     30             <version>${spring.version}</version>
     31         </dependency>
     32 
     33         <dependency>
     34             <groupId>org.springframework</groupId>
     35             <artifactId>spring-tx</artifactId>
     36             <version>${spring.version}</version>
     37         </dependency>
     38 
     39         <dependency>
     40             <groupId>org.springframework</groupId>
     41             <artifactId>spring-jdbc</artifactId>
     42             <version>${spring.version}</version>
     43         </dependency>
     44 
     45         <dependency>
     46             <groupId>org.springframework</groupId>
     47             <artifactId>spring-webmvc</artifactId>
     48             <version>${spring.version}</version>
     49         </dependency>
     50 
     51         <dependency>
     52             <groupId>org.springframework</groupId>
     53             <artifactId>spring-aop</artifactId>
     54             <version>${spring.version}</version>
     55         </dependency>
     56 
     57         <dependency>
     58             <groupId>org.springframework</groupId>
     59             <artifactId>spring-context-support</artifactId>
     60             <version>${spring.version}</version>
     61         </dependency>
     62 
     63         <dependency>
     64             <groupId>org.springframework</groupId>
     65             <artifactId>spring-test</artifactId>
     66             <version>${spring.version}</version>
     67         </dependency>
     68         <!-- springframe end -->
     69 
     70         <!--mysql数据库驱动 -->
     71         <dependency>
     72             <groupId>mysql</groupId>
     73             <artifactId>mysql-connector-java</artifactId>
     74             <version>5.1.38</version>
     75         </dependency>
     76         <!--log4j日志包 -->
     77         <dependency>
     78             <groupId>org.apache.logging.log4j</groupId>
     79             <artifactId>log4j-core</artifactId>
     80             <version>2.6.1</version>
     81         </dependency>
     82         <!-- JUnit单元测试工具 -->
     83         <dependency>
     84             <groupId>junit</groupId>
     85             <artifactId>junit</artifactId>
     86             <version>4.10</version>
     87         </dependency>
     88         <!-- aspectJ AOP 织入器 -->
     89         <dependency>
     90             <groupId>org.aspectj</groupId>
     91             <artifactId>aspectjweaver</artifactId>
     92             <version>1.8.9</version>
     93         </dependency>
     94         <!-- jstl -->
     95         <dependency>
     96             <groupId>javax.servlet</groupId>
     97             <artifactId>jstl</artifactId>
     98             <version>1.2</version>
     99         </dependency>
    100     </dependencies>
    101 
    102     <build>
    103         <plugins>
    104             <!-- define the project compile level -->
    105             <plugin>
    106                 <groupId>org.apache.maven.plugins</groupId>
    107                 <artifactId>maven-compiler-plugin</artifactId>
    108                 <version>2.3.2</version>
    109                 <configuration>
    110                     <source>1.8</source>
    111                     <target>1.8</target>
    112                 </configuration>
    113             </plugin>
    114         </plugins>
    115     </build>
    116 </project>
    

      如果eclise没有自动下载jar包,右键“属性properties”->"Maven"->"Update Project..",强制更新。

    3.数据库准备

      建立数据库sampledb,添加两张表,结构如下:

    图片 14

    图片 15

      t_user为用户信息表,t_login_log为用户登录日志表。表的引擎要指定InnoDB,因为该引擎支持事务。

    图片 16

      初始化一条数据,用户名和密码用于测试登录。

    3、创建util包 Dbutil.java

     1 package com.gxy.util;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 
     6 public class Dbutil {
     7     private String dbUrl ="jdbc:mysql://localhost:3306/db_login";
     8     private String jdbcName="com.mysql.jdbc.Driver";
     9     private String dbUserName="root";
    10     private String dbpassword="123456";
    11     
    12     public Connection getcon() throws Exception{
    13         Class.forName(jdbcName);
    14         Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbpassword);
    15         return con;
    16     }
    17     
    18     public void closeCon(Connection con) throws Exception{
    19         con.close();
    20     }
    21 
    22 }
    

     三、持久层

    1.建立领域对象(实体类)

    User.java

     1 package com.adam.domain;
     2 
     3 import java.io.Serializable;
     4 import java.util.Date;
     5 
     6 public class User implements Serializable {
     7     private int userId;
     8     private String userName;
     9     private String password;
    10     private int credits;
    11     private String lastIp;
    12     private Date lastVisit;
    13 
    14     public int getUserId() {
    15         return userId;
    16     }
    17 
    18     public void setUserId(int userId) {
    19         this.userId = userId;
    20     }
    21 
    22     public String getUserName() {
    23         return userName;
    24     }
    25 
    26     public void setUserName(String userName) {
    27         this.userName = userName;
    28     }
    29 
    30     public String getPassword() {
    31         return password;
    32     }
    33 
    34     public void setPassword(String password) {
    35         this.password = password;
    36     }
    37 
    38     public int getCredits() {
    39         return credits;
    40     }
    41 
    42     public void setCredits(int credits) {
    43         this.credits = credits;
    44     }
    45 
    46     public String getLastIp() {
    47         return lastIp;
    48     }
    49 
    50     public void setLastIp(String lastIp) {
    51         this.lastIp = lastIp;
    52     }
    53 
    54     public Date getLastVisit() {
    55         return lastVisit;
    56     }
    57 
    58     public void setLastVisit(Date lastVisit) {
    59         this.lastVisit = lastVisit;
    60     }
    61 
    62 }
    

    LoginLog.java

     1 package com.adam.domain;
     2 
     3 import java.io.Serializable;
     4 import java.util.Date;
     5 
     6 public class LoginLog implements Serializable {
     7     private int loginLogId;
     8     private int userId;
     9     private String ip;
    10     private Date loginDate;
    11 
    12     public int getLoginLogId() {
    13         return loginLogId;
    14     }
    15 
    16     public void setLoginLogId(int loginLogId) {
    17         this.loginLogId = loginLogId;
    18     }
    19 
    20     public int getUserId() {
    21         return userId;
    22     }
    23 
    24     public void setUserId(int userId) {
    25         this.userId = userId;
    26     }
    27 
    28     public String getIp() {
    29         return ip;
    30     }
    31 
    32     public void setIp(String ip) {
    33         this.ip = ip;
    34     }
    35 
    36     public Date getLoginDate() {
    37         return loginDate;
    38     }
    39 
    40     public void setLoginDate(Date loginDate) {
    41         this.loginDate = loginDate;
    42     }
    43 
    44 }
    

    图片 17

    2.数据处理对象

    UserDao.java

     1 package com.adam.dao;
     2 
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 
     6 import org.springframework.beans.factory.annotation.Autowired;
     7 import org.springframework.jdbc.core.JdbcTemplate;
     8 import org.springframework.jdbc.core.RowCallbackHandler;
     9 import org.springframework.stereotype.Repository;
    10 
    11 import com.adam.domain.User;
    12 
    13 @Repository
    14 public class UserDao {
    15     @Autowired
    16     private JdbcTemplate jdbcTemplate;
    17 
    18     public int getMatchCount(String name, String password) {
    19         String sql = "SELECT count(*) FROM t_user WHERE user_name = ? and password = ?";
    20         return jdbcTemplate.queryForInt(sql, new Object[] { name, password });
    21     }
    22 
    23     public User findUserByName(final String name) {
    24         String sql = "select user_id,user_name,credits from t_user where user_name = ?";
    25         final User user = new User();
    26         jdbcTemplate.query(sql, new Object[] { name }, new RowCallbackHandler() {
    27 
    28             public void processRow(ResultSet rs) throws SQLException {
    29                 user.setUserId(rs.getInt("user_id"));
    30                 user.setUserName(name);
    31                 user.setCredits(rs.getInt("credits"));
    32             }
    33         });
    34         return user;
    35     }
    36 
    37     public void updateLoginInfo(User user) {
    38         String sql = "update t_user set last_visit = ?,last_ip = ?, credits = ? where user_id = ?";
    39         jdbcTemplate.update(sql,
    40                 new Object[] { user.getLastVisit(), user.getLastIp(), user.getCredits(), user.getUserId() });
    41     }
    42 }
    

    LoginLogDao.java

     1 package com.adam.dao;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.jdbc.core.JdbcTemplate;
     5 import org.springframework.stereotype.Repository;
     6 
     7 import com.adam.domain.LoginLog;
     8 
     9 @Repository
    10 public class LoginLogDao {
    11     @Autowired
    12     private JdbcTemplate jdbcTemplate;
    13 
    14     public void insertLoginLog(LoginLog loginLog) {
    15         String sql = "insert into t_login_log(user_id, ip,login_datatime) values(?,?,?)";
    16         Object[] pra = { loginLog.getUserId(), loginLog.getIp(), loginLog.getLoginDate() };
    17         jdbcTemplate.update(sql, pra);
    18     }
    19 }
    

    3.在spring中装配Dao

      在Dao中并没有打开或释放数据库连接,那么Dao是如何访问数据库的?而且在Dao中使用的JdbcTemplate是从哪来的?这都是spring帮我们实现的,所以需要在spring中装配Dao。

      创建spring配置文件applicationContext.xml,结构如下

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
     4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:tx="http://www.springframework.org/schema/tx"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans
     7         http://www.springframework.org/schema/beans/spring-beans.xsd
     8         http://www.springframework.org/schema/context
     9         http://www.springframework.org/schema/context/spring-context-4.3.xsd
    10         http://www.springframework.org/schema/aop
    11         http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    12         http://www.springframework.org/schema/tx
    13         http://www.springframework.org/schema/tx/spring-tx.xsd">
    14     ...
    15 </beans>
    

      在其中加入配置信息

     1 <!-- 扫描包,应用注解 -->
     2     <context:component-scan base-package="com.adam.dao" />
     3 <!--定义一个jdbc数据源,创建一个驱动管理数据源的bean -->
     4     <bean id="jdbcDataSource"
     5         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     6         <property name="driverClassName" value="com.mysql.jdbc.Driver" />
     7         <property name="url" value="jdbc:mysql://localhost:3306/sampledb" />
     8         <property name="username" value="root" />
     9         <property name="password" value="AdamJin" />
    10     </bean>
    11 <!-- 定义jdbc模板Bean -->
    12     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
    13         p:dataSource-ref="jdbcDataSource" />
    

    本文由美高梅开户发布于美高梅官方网站开户,转载请注明出处:用户登录功能实现,登陆实例

    关键词: 美高梅开户

上一篇:23个常用linux工具

下一篇:没有了