构建ssm框架

  1. 目录结构
    在这里插入图片描述
  2. 在maven中(pom.xml)引入依赖
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.9</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20180130</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/taglibs/standard -->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.5</version>
    </dependency>
  1. 修改web.xml文件
<?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_3_1.xsd"
         version="3.1">
  <!--Spring核心监听器 -->
  <!--在服务器启动时加载Spring容器,且只会加载一次 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring_config.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!--配置springmvc -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--配置初始化参数:作用是配置SpringMVC配置文件的位置和名称 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring_mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--配置由Spring 提供的针对中文乱码的编码过滤器 -->
  <!-- 编码过滤器 -->
  <filter>
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

  1. 导入spring_mvc.xml文件
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="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">

    <!--1.开启Springioc 自动扫描注解包  只对mvc的包做扫描  -->
    <context:component-scan base-package="com.song.controller"/>

    <!--2. 开启注解,对jackson数据支持 -->
    <mvc:annotation-driven/>
    <!--统一放行静态资源-->
    <mvc:default-servlet-handler/>
    <!--- 静态资源 -->
    <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
    <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
    <mvc:resources mapping="/images/**" location="/images/"></mvc:resources>

    <!--3.配置视图解析器  -->
    <!-- 配置视图解析器:如何把handle方法返回值解析为实际的物理视图
         name="prefix"代表前面的目录,为空代表根目录  name="suffix"代表返回的地址为后缀为.JSP的文件 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <bean id="utf8Charset" class="java.nio.charset.Charset"
          factory-method="forName">
        <constructor-arg value="UTF-8"/>
    </bean>

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg ref="utf8Charset"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

</beans>

  1. 导入spring_config.xml文件
<?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: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/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. 配置数据源:阿里数据源  -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/opo?useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=utf-8" />
        <property name="username" value="root" />
        <property name="password" value="123" />
    </bean>

    <!--2. 配置mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--dataSource属性指定要用到的连接池-->
        <property name="dataSource" ref="dataSource" />
        <!--configLocation属性指定mybatis的核心配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!--3. 自动扫描mybatis中mapper接口包,
           并且自动注入第二项创建的sessionfactory,初始化所有的mapper接口对象 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.song.mapper " />
    </bean>

    <!--4. 扫描service注解 -->
    <context:component-scan base-package="com.song.service"/>

    <!--5. 配置事务管理器  -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!--6. 开启注解进行事务管理   transaction-manager:引用上面定义的事务管理器-->
    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>

  1. 导入mybatis.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>
        <!--如果value为true的时候,当返回内容为空时,那么返回的是一个空的对象,而不是null
            如果这里的value为false(默认值),mybatis在没有查询到内容的时候返回null-->
        <setting name="returnInstanceForEmptyRow" value="true"/>
        <!--显示sql语句,此行配置如果删除,则不在后台显示SQL语句-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>
  1. 创建pojo对象(实体类)
package com.song.pojo;

public class Users{


    private int userId;
    private String userName;
    private String userPwd;
    private String userBirth;
    private String userAge;
    private String userEmail;

    public Users(){

    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    public String getUserBirth() {
        return userBirth;
    }

    public void setUserBirth(String userBirth) {
        this.userBirth = userBirth;
    }

    public String getUserAge() {
        return userAge;
    }

    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }

    public String getUserEmail() {
        return userEmail;
    }

    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }

    @Override
    public String toString() {
        return "Users [id="+userId+",userName="+userName+",userPwd="+userPwd+",userBirth="+userBirth+",userAge="+userAge+",userEmail="+userEmail+"]";
    }
}

  1. 创建mapper.xml(实体类对应的mapper,相当于dao层,与数据库进行交互)
<?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.song.mapper.UserMapper">
    <!--插入user-->
    <insert id="addUser" >
        insert into user(username,userpwd) values(#{arg0},#{arg1});
    </insert>

    <!--通过username查询user-->
    <select id="queryUser"  resultType="com.song.pojo.Users">
        select * from user where username = #{userName}
    </select>

    <!--通过username和pwd查询user-->
    <select id="findByNamePwd" resultType="com.song.pojo.Users">
        select * from user where username = #{arg0} and userpwd = #{arg1}
    </select>

</mapper>
  1. 创建mapper接口(其中的方法与mapper.xml中的操作相对应)
package com.song.mapper;

import com.song.pojo.Users;


public interface UserMapper {
    int addUser(String userName, String userPwd);

    Users queryUser(String userName);

    Users findByNamePwd(String userName, String userPwd);
}

  1. 创建service
package com.song.service;

import com.song.pojo.Users;

/*
UsserService接口
*/
public interface UserService {

    public int addUser(String userName, String userPwd);

    public Users queryUser(String userName);

    public Users findByNamePwd(String UserName, String UserPwd);
}

package com.song.service.impl;

/*
* service层主要用于处理业务逻辑
*
* 用户模块的实现类
* */

import com.song.mapper.UserMapper;
import com.song.pojo.Users;
import com.song.service.UserService;
import com.song.utils.MD5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Autowired(required = false)
    private UserMapper userMapper;

    @Override
    public int addUser(String userName, String userPwd) {
        // 继续下传给dao层, 数据库访问
        System.out.println("=====userServiceImpl===="+userName);
        //将表单提交的密码加密
        String newUserPwd = null;
        try {
            newUserPwd= MD5.getMD5(userPwd).toString(); // 32位唯一标识符,不可逆转,穷举

        }catch (Exception e){
            e.printStackTrace();
        }

        return userMapper.addUser(userName, newUserPwd);
    }

    @Override
    public Users queryUser(String userName) {
        return userMapper.queryUser(userName);
    }

    @Override
    public Users findByNamePwd(String userName, String userPwd) {
        String newUserPwd = null;
        try {
            newUserPwd= MD5.getMD5(userPwd).toString(); // 32位唯一标识符,不可逆转,穷举

        }catch (Exception e){
            e.printStackTrace();
        }

        return userMapper.findByNamePwd(userName, newUserPwd);
    }
}

  1. 创建controller
package com.song.controller;

import com.song.pojo.Users;
import com.song.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;



@Controller
public class UserController {

    @Autowired
    private UserService userService;

//    @RequestMapping(value = "queryEmp.do",produces = {"application/json;charset=utf-8"})
//    @ResponseBody
//    public List<Emp> queryEmpList(){
//        List<Emp> list = empService.queryEmpList();
//       return list;
//    }

    /**
     * 注册
     * */
    //@RequestMapping(value = "register.do", method = RequestMethod.POST)
    @RequestMapping("register.do")
    public String register(String userName, String userPwd, Model model){

        System.out.println(userName+"================"+userPwd);

        // 接收参数,传递给Service(业务逻辑层)
        Users users = userService.queryUser(userName);

        if (users == null){
            // 接收参数,传递给Service(业务逻辑层)
            int result = userService.addUser(userName, userPwd);

            if (result > 0){
                return "login";
//                resp.sendRedirect("/login.jsp");
            }else {
                model.addAttribute("messageError", "数据库错误,注册失败");
//                request.setAttribute("messageError", "数据库错误,注册失败");
                return "register";
//                req.getRequestDispatcher("/register.jsp").forward(req, resp);
            }
        }else {
            model.addAttribute("messageError", "该用户已存在,注册失败");
            return "register";
//            req.setAttribute("messageError", "该用户已存在,注册失败");
//            req.getRequestDispatcher("/register.jsp").forward(req, resp);

        }
    }

    /***
     * 登录
     * @param userName
     * @param userPwd
     * @param model
     * @return
     */
    @RequestMapping("login.do")
    public String login(String userName, String userPwd, Model model){
        System.out.println(userName+"login"+userPwd);
        // 接收参数,传递给Service(业务逻辑层)

        Users users = userService.findByNamePwd(userName, userPwd);

        if (users != null){
            System.out.println("查询到user:"+users.getUserName()+","+users.getUserPwd());
            model.addAttribute("user", users);
            return "success";

        }else {
            model.addAttribute("messageError", "用户名或密码错误");
            return "login";
        }
    }


}

  1. html就不展示了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值