前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >杨校老师课堂基于SSM整合之用户登录案例【Eclipse - Maven版】

杨校老师课堂基于SSM整合之用户登录案例【Eclipse - Maven版】

作者头像
杨校
发布2019-08-01 10:40:34
5880
发布2019-08-01 10:40:34
举报
文章被收录于专栏:Java技术分享圈

1. 开发环境

Eclipse:2019.06 + Jdk:8u211 + Tomcat:9.0.14 + Maven:3

2.准备工作

spring5.1.5 + mybatis3.6.4 + mybatis-spring1.3.2 + druid1.1.0 + MySQL5.1.4.6

3. 项目布局

4.编码

1. 编写pom.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.javabs</groupId>
  <artifactId>ssm-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>ssm-demo Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.javabs.cn</url>

  <!-- 为了确定每个框架的版本号 -->
  <!-- 锁定版本 -->
  <properties>
  		<spring.version>5.1.5.RELEASE</spring.version>
		<mybatis.version>3.4.6</mybatis.version>
		<mybatis-spring.version>1.3.2</mybatis-spring.version>
        <slf4j.version>1.7.25</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
		<druid.version>1.1.10</druid.version> 
		<mysql.version>5.1.38</mysql.version>
  </properties>
  
  <dependencies>
    	<!-- spring -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.6.8</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>


		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		
		<!-- mybatis start -->
		<dependency>
			 <groupId>org.mybatis</groupId>
   			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		
		<!-- mybatis start -->
		<dependency>
			<groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
			<version>${mybatis-spring.version}</version>
		</dependency>
		
		 <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
	        <!-- log end -->
	        
	        <!--junit  start -->
       	<dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.12</version>
	      <scope>test</scope>
	    </dependency>
	   <!-- junit end -->
	   
	    <dependency>
	    	<groupId>mysql</groupId>
	    	<artifactId>mysql-connector-java</artifactId>
	    	<version>${mysql.version}</version>
	    </dependency>
	    
	    <dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>druid</artifactId>
		    <version>${druid.version}</version>
		</dependency>
	    
 		<dependency>
	    	<groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>4.0.1</version>
		    <scope>provided</scope>
	    </dependency>
	    
	    <dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		
		 <dependency>
	    	<groupId>javax.servlet.jsp</groupId>
	    	<artifactId>jsp-api</artifactId>
	    	<version>2.0</version>
	    	<scope>provided</scope>
	    </dependency>
  </dependencies>
  <build>
    <finalName>ssm</finalName>
     <pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
					<showWarnings>true</showWarnings>
				</configuration>
			</plugin>
			
			 <!-- Tomcat7 -->
	        <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
			    <artifactId>tomcat7-maven-plugin</artifactId>
			    <version>2.2</version>
                <configuration>
                    <!-- <path>/</path> -->
                    <server>tomcat7</server>
                    <port>8888</port>
                    <encoding>UTF-8</encoding>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
		</plugins>
	</pluginManagement>
  </build>
</project>

2. 编写web.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <display-name>基于ssm的整合案例</display-name>
  
  <!-- 指定Spring配置文件 的位置 -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- Spring 的监听器 -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 编码过滤器 -->
  <filter>
  	<filter-name>encoding</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>encoding</filter-name>
  	<url-pattern>*.action</url-pattern>
  </filter-mapping>
  
  <!-- 前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-config.xml</param-value>
  	</init-param>
  	<!-- 程序一旦启动,自动加载前端控制器 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
  <!-- 欢迎页面 -->
  <welcome-file-list>
  	<welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>

3. 配置文件

1. applicationContext.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd ">

	<!-- 1.读取jdbc的配置文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	
	<!-- 2.配置druid数据源 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
	
	<!-- 3.配置MyBatis的工厂 -->
	<bean class="org.mybatis.spring.SqlSessionFactoryBean" >
		<!-- 3.1指定mybatis-config.xml文件的位置 -->
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<!-- 3.2 注入引用的数据源 -->
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<!-- 4. 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
		<property name="dataSource" ref="dataSource" />
	</bean>
	<!-- 5. 配置事务通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<!-- 传播行为 -->
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="insert*" propagation="REQUIRED"/>
			<tx:method name="create*" propagation="REQUIRED"/>
			<tx:method name="save*" propagation="REQUIRED"/>
			<tx:method name="put*" propagation="REQUIRED"/>
			<tx:method name="delete*" propagation="REQUIRED"/>
			<tx:method name="remove*" propagation="REQUIRED"/>
			<tx:method name="edit*" propagation="REQUIRED"/>
			<tx:method name="update*" propagation="REQUIRED"/>
			<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="quert*" propagation="SUPPORTS" read-only="true" />
		</tx:attributes>
	</tx:advice>
	<!-- 6.切面 -->
	<aop:config>
		<aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.javabs.ssm.service.*.*(..))"/>
	</aop:config>
	<!-- 7.接口开发,去扫描dao的配置mapper文件 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
		<property name="basePackage" value="cn.javabs.ssm.dao" />
	</bean>
	<!-- 8.配置扫描service注解 -->
	<context:component-scan base-package="cn.javabs.ssm.service"></context:component-scan>
	
</beans>

2.springmvc-config.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd ">


	<!-- 1.mvc扫描驱动注解 -->
	<mvc:annotation-driven />
	
	<!-- 2.配置扫描器扫描controller -->
	<context:component-scan base-package="cn.javabs.ssm.controller" />
	
	<!-- 3.配置静态资源的访问映射 -->
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/css/" mapping="/css/**" />
	<mvc:resources location="/img/" mapping="/img/**" />
	
	<!-- 4.配置视图处理器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix" value="/admin/" />
		<!-- 后缀 -->
		<property name="suffix" value=".jsp" />
	</bean>

</beans>

3.mybatis-config.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<!-- 定义别名  -->
	<typeAliases>
		<package name="cn.javabs.ssm.entity"/>
	</typeAliases>
</configuration>

4.jdbc.properties

代码语言:javascript
复制
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssm-demo
jdbc.username = root
jdbc.password = sorry

建包:

代码语言:javascript
复制
cn.javabs.ssm.entity        --- 实体包

cn.javabs.ssm.controller    --- 控制器包

cn.javabs.ssm.service       --- 业务接口包

cn.javabs.ssm.service.impl  --- 业务接口的实现类包

cn.javabs.ssm.dao           --- 持久层接口包 + Mapper文件包

User.java

代码语言:javascript
复制
package cn.javabs.ssm.entity;

public class User {

	private Integer id;
	private String username;
	private String password;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	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;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}

}

2.UserDao.java

代码语言:javascript
复制
package cn.javabs.ssm.dao;

import org.apache.ibatis.annotations.Param;

import cn.javabs.ssm.entity.User;

public interface UserDao {

	User userLogin(@Param("username") String username, @Param("password") String password);

}

3.UserDao.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.javabs.ssm.dao.UserDao">

	<select id="userLogin" parameterType="String"
		resultType="cn.javabs.ssm.entity.User">
		select * from users where
		username = #{username} and password = #{password}
	</select>
</mapper>

4. UserService.java

代码语言:javascript
复制
package cn.javabs.ssm.service;

import cn.javabs.ssm.entity.User;

public interface UserService {

	User login(String username, String password);

}

5. UserServiceImpl.java

代码语言:javascript
复制
package cn.javabs.ssm.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.javabs.ssm.dao.UserDao;
import cn.javabs.ssm.entity.User;
import cn.javabs.ssm.service.UserService;

@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {

	@Autowired
	private UserDao userDao;

	public User login(String username, String password) {
		System.out.println(username);

		User user = this.userDao.userLogin(username, password);
		System.out.println("df");
		System.out.println("ghj" + user);

		return user;
	}

}

6. UserController

代码语言:javascript
复制
package cn.javabs.ssm.controller;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;

import cn.javabs.ssm.entity.User;
import cn.javabs.ssm.service.UserService;

@Controller
public class UserController {

	@Autowired
	private UserService userService;

	@PostMapping("/userLogin.action")
	public String userLogin(HttpSession session, String username, String password, Model model) {
		System.out.println("password = " + password);
		User user = userService.login(username, password);
		System.out.println("user:" + user);

		if (user != null) {
			session.setAttribute("USER", user);
			return "user";
		}
		model.addAttribute("msg", "您登陆失败");
		return "message";
	}
}

7.在webapp下创建一个文件夹,命名为admin

分别创建三个网页:login.jsp message.jsp user.jsp

login.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set value="${pageContext.request.contextPath}" var="basePath"  ></c:set>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
	<form action="${basePath}/userLogin.action" method="post">
		Account: <input type="text" name="username" /> <br /> 
		
		Password:<input type="text" name="password" /> <br /> 
		
				 <input type="submit"  value="登录">
	</form>
</body>
</html>

message.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>提示页面</title>
</head>
<body>
    ${msg}
</body>
</html>

user.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录成功主页</title>
</head>
<body>
	<h2>${sessionScope.USER.username},您好。</h2>
</body>
</html>

在webapp再建一个jsp,命名为:index.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录入口</title>
</head>
<body>

	<jsp:forward page="/admin/login.jsp"></jsp:forward>

</body>
</html>

右键项目,选择 Run As --- 选择 Maven Build(从上数第二个)

接下来在Goals的后方输入: tomcat7:run 然后点击 下方的 Run

如图:

代码托管

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年07月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 开发环境
  • 2.准备工作
  • 3. 项目布局
  • 4.编码
    • 1. 编写pom.xml
      • 2. 编写web.xml
        • 3. 配置文件
        相关产品与服务
        代码托管
        CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档