SSM简单的登录注册

SSM框架整合步骤:
1.环境工具:
ecplice、tomcat7、jdk1.8、mysql、navcat

2.项目结构如下:
在这里插入图片描述
所需的配置文件:

pom.xml:jar管理
web.xml :配置servlet
spring:  applicationContext.xml  spring的基本配置
springmvc-servlet.xml :springmvc配置
mybatis:mybatis.xml  、 mapper.xml 
jdbc.properties  数据库配置文件
log4j.properties  日志文件

3.环境搭建
创建maven项目,版本选择webapp
在这里插入图片描述
选择版本web、jdk版本;添加web.xml 文件
在这里插入图片描述
添加依赖,配置pom.xml文件

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.learn.ssm1</groupId>
  <artifactId>SSM03</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SSM03 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
     <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <!--配置webmvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <!--配置spring jdbc,用来加载DataSourceTransactionManager-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <!--配置切面的jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <!--mybatis,用来加载SqlSessionFactoryBean和MapperScannerConfigurer-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!--数据库驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
        <!--日志文件-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.22</version>
        </dependency>
        <!--json处理工具包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <!-- 连接池,用来加载DruidDataSource-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
        <!--javaScript标签库-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    
    
  </dependencies>
           <build>
               <finalName>SSM03</finalName>
        <plugins>
            <!-- 配置Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                 <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8888</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
  
  
</project>

再Java Resource 下新建配置spring文件夹,存放spring的配置文件
applicationContext.xml文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"  xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!--扫描spring注解所在的包  -->
<context:component-scan base-package="com.agu.service"/>
<!--使用专门扫描mapper接口的类  -->
<bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
          <property name="basePackage"  value="com.agu.mapper"></property>
</bean>
<!-- 加载资源文件(数据库的配置文件)
          <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="locations">
                   <list>
                        <value>classpath:jdbc.properties</value>
                   </list>
              </property>
          </bean>-->
          <!--引入资源配置文件  -->
          <context:property-placeholder  location="classpath:jdbc.properties"/>
<!-- 配置数据库连接池 -->
          <bean id="dataSource"  class="com.alibaba.druid.pool.DruidDataSource" >
                        <!--配置数据库的四个属性  -->
                        <property name="driverClassName"  value="${jdbc.driverClass}"></property>
                        <property name="url"  value="${jdbc.url}"></property>
                        <property name="username"  value="${jdbc.username}"></property>
                        <property name="password"  value="${jdbc.password}"></property>
          </bean>
           <!--sqlSession工厂,我们对数据库增删改查就靠他   spring与mybatis的整合部分-->
    <bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入配置的数据源 -->
        <property name="dataSource"  ref="dataSource"></property>
        <!-- 注入mybatis-config配置文件 -->
        <property name="configLocation"  value="classpath:mybatis/mybatis-config.xml"></property>
        <!-- 注入mapper.xml文件位置,
        这里的/**/*.xml写法,只要是/mybatis/mapper下的都可以注入进来,哪怕里面又加了几个文件夹-->
        <property name="MapperLocations"  value="classpath:mybatis/mapper/**/*.xml"></property>
        <!-- 配置别名所属的包名,配置了这个,我们UserMapper.xml文件下的resultType就只需要写类名即可-->
        <property name="typeAliasesPackage"  value="com.agu.domain"></property>
    </bean>
          
          
          
      <!-- 配置事务管理器 -->
    <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource"  ref="dataSource"></property>
    </bean>
    <!-- 配置事务属性 -->
    <tx:advice id="txAdvice"  transaction-manager="transactionManager">
        <tx:attributes>
            <!--配置事务的属性,如果方法名是find开头,只允许查询业务,不允许增删改业务,
            这样可以防错,如果写了删除或者增加功能,则会抛出异常,提醒开发人员-->
            <tx:method name="find*" read-only="true"/>
            <!--其他方法做增删改功能-->
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置切面
    配置了事务后,我们肯定要告诉spring,哪些方法需要加上事务  -->
    <aop:config>
        <!--配置切点-->
        <aop:pointcut expression="execution(*  com.agu.service.impl.*.*(..))" id="pointcut"/>
        <!--将advice注入程序中pointcut位置的代码-->
        <aop:advisor advice-ref="txAdvice"  pointcut-ref="pointcut"/>
    </aop:config>
</beans>

springmvc-servlet 的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">
          <!-- 开启注解扫描 -->
          <context:component-scan  base-package="com.agu.controller"></context:component-scan>        
          <!--使用默认的注解驱动会自动加载 HandlerMapping,  HandlerAdapter   -->
          <mvc:annotation-driven></mvc:annotation-driven>
          
          <!--配置视图解析器  -->
          <bean    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!--比如我们页面需要跳转到user/main/login.jsp 配置之后只需要写login 可以不写路径和后缀  -->
              <!--前缀  -->
              <property name="prefix"  value="/"></property>
              <!-- 后缀 -->
              <property name="suffix"   value=".jsp"></property>
          </bean>
          
           <!-- 处理静态资源拦截问题,如何是静态资源的请求,则默认服务器的servlet处理,
     如果不是,则交给DispatcherServlet处理-->
    <mvc:default-servlet-handler/>
    
       <!--  <mvc:resources location=""  mapping="/js/**"></mvc:resources>
     <mvc:resources location=""  mapping="/css/**"></mvc:resources>
     <mvc:resources location=""  mapping="/image/**"></mvc:resources> -->
</beans>

再Java Resource 下新建配置mybatis文件夹,
mybatis-config.xml 文件的配置如下:

<?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>
          <settings>
                   <setting  name="mapUnderscoreToCamelCase" value="true"/>
          </settings>
</configuration>

在mybatis文件夹下新建mapper文件夹,存放mapper.xml文件

<?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="com.agu.mapper.UserMapper">
        <!--id要与接口中的方法名一样,返回值的类型本来是需要写类的全路径,因为在spring与mybatis的整合中写了别名所属包故只需要写包名  -->
               <select id="findAllUsers"  resultType="User">
                    select * from tb_user
               </select>
               <!--登录  -->
                   <select id="findStudent"  resultType="Student" >
                        select * from student where  s_name=#{studName} and s_password=#{studPassword}
                   </select>  
                   
                   <!--注册列表  -->
                   <insert id="register"  parameterType="Student" >
                        insert into student  (s_name,s_password) values(#{studName},#{studPassword})
                   </insert>                    
        </mapper>

资源配置文件如下:

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/scott
jdbc.username=root
jdbc.password=root
``

log4j.properties

```java
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE}  %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change  'info' to 'debug' ###
log4j.rootLogger=debug, stdout

配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">
          <!--配置servlet  -->
           <!-- 配置字节码过滤器 -->
    <filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 指定spring配置文件名 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
         <param-value>classpath:spring/applicationContext.xml</param-value>
    </context-param>
    <!-- 工程启动时,创建IOC容器 -->
    <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- springmvc入口 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定springmvc配置文件路径 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
             <param-value>classpath:spring/springmvc-servlet.xml</param-value>
        </init-param>
        <!--项目启动时,就加载此servlet  -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- 拦截除了jsp以外的所有请求(不是/*) -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
     
</web-app>

环境配置完成;下面编写测试类
bean类:

package com.agu.domain;
import java.io.Serializable;
public class Student implements Serializable {
     
     private static final long serialVersionUID = 1L;
          private String studId;
          private String teachId;
          private String studName;
          private String studPassword;
          private String studBirth;
          private String studSex;
          public String getStudId() {
              return studId;
          }
          public void setStudId(String studId) {
              this.studId = studId;
          }
          public String getTeachId() {
              return teachId;
          }
          public void setTeachId(String teachId) {
              this.teachId = teachId;
          }
          public String getStudName() {
              return studName;
          }
          public void setStudName(String studName) {
              this.studName = studName;
          }
          public String getStudPassword() {
              return studPassword;
          }
          public void setStudPassword(String studPassword)  {
              this.studPassword = studPassword;
          }
          public String getStudBirth() {
              return studBirth;
          }
          public void setStudBirth(String studBirth) {
              this.studBirth = studBirth;
          }
          public String getStudSex() {
              return studSex;
          }
          public void setStudSex(String studSex) {
              this.studSex = studSex;
          }
          @Override
          public String toString() {
              return "Student [studId=" + studId + ",  teachId=" + teachId + ", studName=" + studName + ",  studPassword="
                        + studPassword + ", studBirth=" +  studBirth + ", studSex=" + studSex + "]";
          }
          public static long getSerialversionuid() {
              return serialVersionUID;
          }
          
          
          
          
}

mapper类:(编写接口文件)

package com.agu.mapper;

import java.util.List;

import com.agu.domain.Student;
import com.agu.domain.User;

public interface UserMapper {
    public List<User> findAllUsers();
    
    /*登录*/
    public List<Student> findStudent(Student student);
    
    /*注册*/
    public int register(Student student);

}    

service 类:

package com.agu.service;

import java.util.List;

import com.agu.domain.Student;
import com.agu.domain.User;

public interface UserService {
    public List<User> findAllUsers();
    
    public List<Student> findStudent(Student student);
    
    public int register(Student student);
}    

service层实现类:

package com.agu.service.impl;

import com.agu.domain.Student;
import com.agu.domain.User;
import com.agu.mapper.UserMapper;
import com.agu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    public List<User> findAllUsers() {
        List<User> list = userMapper.findAllUsers();
        return list;
    }

    @Override
    public List<Student> findStudent(Student student) {
        List<Student> list = userMapper.findStudent(student);
        return list;
    }

    @Override
    public int register(Student student) {
        // TODO Auto-generated method stub
        return userMapper.register(student);
    }

}

controller(控制类):

package com.agu.controller;

import java.util.List;

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

import com.agu.domain.Student;
import com.agu.domain.User;
import com.agu.service.UserService;

@Controller
@RequestMapping("user")
public class UserController {
    
            //@Autowired表示被修饰的类需要注入对象(无需在spring配置文件中注入)
            @Autowired
            private UserService userService;
            
            @RequestMapping("list")
            public String test1(Model model) {
                List<User> users = userService.findAllUsers();
                model.addAttribute("userList", users);
                return "users";
            }    
            
            
            @RequestMapping("login")
            public String test2(String studName,String studPassword) {
                System.out.println(studName +"........"+studPassword);
                Student student = new Student();
                student.setStudName(studName);
                student.setStudPassword(studPassword);
                List<Student> users = userService.findStudent(student);
                if(users.size()>0) {
                    return "index";
                    
                }else {
                    return "erro";
                }
                
            }    
            
            @RequestMapping("register")
            public String test3(String studName,String studPassword) {
                System.out.println(studName +"........"+studPassword);
                Student student = new Student();
                student.setStudName(studName);
                student.setStudPassword(studPassword);
                int a = userService.register(student);
                if(a>0) {
                    return "index";
                    
                }else {
                    return "erro";
                }
                
            }    
}

web-inf下新建 jsp文件夹,存放jsp文件
注意:web-inf下的资源文件,浏览器不能直接访问

前端:
注册

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
		<form action="user/register" method="post">
			用户名:<input name="studName"> <br>
			密码:<input name="studPassword">	<br>
			<button>提交</button>
		</form>
</body>
</html>

登录:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
		<form action="user/login" method="post">
			用户名:<input name="studName"> <br>
			密码:<input name="studPassword">	
			<button>提交</button>
		</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值