首页 > Web开发 > 详细

【WEB应用】SSM框架搭建V2.0

时间:2021-03-14 10:13:54      阅读:22      评论:0      收藏:0      [点我收藏+]

1.

提前下载好eclipse,mysql,tomcat9

技术分享图片

下载apache-maven-3.6.3,放到C盘。

修改配置文件:C:\apache-maven-3.6.3\conf\settings.xml

<localRepository>C:\apache-maven-3.6.3\repository</localRepository>

apache-maven-3.6.3下新建目录:repository

2.配置eclipse

maven配置:

技术分享图片技术分享图片

jdk配置、server配置、jsp配置:

技术分享图片技术分享图片

 

 

 技术分享图片

3.创建maven project

技术分享图片技术分享图片

4、配置maven project

选中项目,右击鼠标,选中Properties

技术分享图片技术分享图片

 

 

 技术分享图片技术分享图片

 

 

 这步如果提示WebContent已存在之类的报错,可以删除WebContent文件夹,再次尝试。

 5.pom.xml、web.xml、springmvc.xml、spring.xml、mybatis-config.xml、jdbc.properties文件的创建.

【如果包名不一样,别忘记修改成自己的项目包名】

技术分享图片内容分别如下:

 

 

pom.xml(maven自动根据dependency配置,下载依赖包。)

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fawiec.etp.ssmproject</groupId>
  <artifactId>ssmproject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
     <!-- 引入spring框架对应的jar -->
     <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.16.RELEASE</version>
    </dependency>
     <!-- 引入aop框架对应的实现spring-aspectjs -->
     <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.1.16.RELEASE</version>
    </dependency>
     <!-- 引入AOP联盟对应jar -->
     <!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
    <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
    </dependency>
    <!-- 进入spring-jdbc.jar -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.1.16.RELEASE</version>
    </dependency>
    <!-- 引入spring-webmvc对应的jar -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.1.16.RELEASE</version>
    </dependency>
    <!-- 引入mybatis框架对应的jar -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.4</version>
    </dependency>
    <!-- 引入mybatis与spring框架整合的jar,mybatis-spring.jar -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.4</version>
    </dependency>
    <!-- 引入mysql数据库的驱动 -->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
    </dependency>
    <!-- 引入数据库连接池(采用阿里的druid) -->
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.22</version>
    </dependency>
    <!-- 引入jstl.jar -->
    <!-- https://mvnrepository.com/artifact/jstl/jstl -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- 引入mybatis的缓存框架ehcache -->
    <!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-ehcache -->
    <dependency>
        <groupId>org.mybatis.caches</groupId>
        <artifactId>mybatis-ehcache</artifactId>
        <version>1.2.1</version>
    </dependency>
    <!-- 引入校验框架hibernate-validation(第三发的校验框架) -->
    <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.20.Final</version>
    </dependency>
    <!-- 引入jackson,用来处理json -->
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.10.4</version>
    </dependency>
    <!-- 引入mybatis的分页插件 -->
    <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.1.11</version>
    </dependency>
   <!-- 引入文件上传组件Apache fileupload -->
   <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.4</version>
    </dependency>
       <!-- 引入ognl(mybatis中的动态SQL) -->
   <!-- https://mvnrepository.com/artifact/ognl/ognl -->
    <dependency>
        <groupId>ognl</groupId>
        <artifactId>ognl</artifactId>
        <version>3.2.13</version>
    </dependency>
   <!-- 引入mybatis的逆向工程 -->
   <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.4.0</version>
    </dependency>
   
  </dependencies>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.1" 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">

   <!-- 配置上下文的监听器ContextLoadListener,该类在spring-web.jar包中,其作用:
         在web项目启动的同时加载并启动spring框架,同时我们也需要给该监听器配置一个上下文的初始化参数,目的是用来指定
         spring框架的核心配置文件名称及路径
    -->
    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
   <!-- 配置前端控制器DispatcherServlet,该类在spring-webmvc.jar包中,其作用:
       1.在web项目启动的同时启动springmvc框架
       2.把所有的用户请求都交给springmvc框架来处理
    -->
    <servlet>
       <servlet-name>DispatcherServlet</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <!-- 给该前端控制器配置一个初始化参数contextConfigLocation,目的用来动态指定springmvc框架的核心配置文件名称及路径,
           如果没有配置该初始化参数的话,默认会到WEB-INF/目录下查找名称为<servlet-name>-servlet.xml作为springmvc框架的核心配置文件
        -->
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
       <servlet-name>DispatcherServlet</servlet-name>
       <!-- 注意此处配置的路径为反斜杠“/”,注意不能配置成"/* -->
       <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- 3.配置编码的过滤器CharacterEncodingFilter,其作用是统一全站编码 ,该类在spring-web.jar包中-->
    <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <!-- 配置相关的初始化参数,如encoding,用来指定所采用的编码 -->
      <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
      </init-param>
      <!-- 配置初始化参数forceRequestEncoding,用来指定请求前的编码设置为UTF-8 -->
      <init-param>
         <param-name>forceRequestEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
      <!-- 配置初始化参数forceResponseEncoding,用来指定响应前的编码设置为UTF-8 -->
      <init-param>
         <param-name>forceResponseEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
    </filter>
    <filter-mapping>
       <filter-name>CharacterEncodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 配置过滤器HiddenHttpMethodFilter,其作用,如果采用基于REST风格的开发,需要把一些POST请求转换成PUT,DELETE等时就需要使用该过滤器 -->
    <filter>
       <filter-name>HiddenHttpMethodFilter</filter-name>
       <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
        
        <!-- 配置开启类扫描的注解解析器配置,这里主要针对@Controller注解 -->
        <context:component-scan base-package="com.fawiec.etp.ssmproject.controller"/>
        <!-- 配置开启依赖注入的注解解析器配置,主要针对@Autowired,@Resource等注解 -->
        <context:annotation-config />
        <!-- 配置对于静态资源的放行操作配置(把静态资源交给web服务器来处理) -->
        <mvc:default-servlet-handler/>
        <!-- 配置开启基于注解的处理器映射器与适配器的配置,默认是开启的 -->
        <mvc:annotation-driven validator="validation"/>
        <!-- 配置视图解析器,该类在spring-webmvc.jar包中 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/jsp/"/>
          <property name="suffix" value=".jsp"/>
        </bean>
        <!-- 配置加载校验错误的属性提示文件,该类在spring-context.jar包中 -->
        <bean id="messageSource"  class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
          <!-- 通过该basename属性来指定对应的错误消息提示文件的位置及名称 -->
          <property name="basename" value="classpath:message"/>
        </bean>
        <!-- 注册校验器,该类也是在spring-context.jar包中 -->
        <bean id="validation" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
           <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
           <property name="validationMessageSource" ref="messageSource"/>
        </bean>
 </beans>

spring.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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd">
       
       <!-- 配置开启类扫描的注解解析器 --> 
       <context:component-scan base-package="com.fawiec.etp.ssmproject">
          <!-- 配置过滤掉@Controller注解,因为在springmvc.xml文件中已经进行扫描配置了 -->
         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
       </context:component-scan>
       <!-- 配置开启依赖注入的注解解析器 -->
       <context:annotation-config/>
      <!-- 引入jdbc.properties -->     
      <context:property-placeholder location="classpath:jdbc.properties"/>
      <!-- 配置数据源(druid),该类在druid.jar包中 -->
      <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
             <property name="driverClassName" value="${jdbc.driver}"/>
             <property name="url" value="${jdbc.dburl}"/>
             <property name="username" value="${jdbc.user}"/>
             <property name="password" value="${jdbc.password}"/>
             <!-- 获取设置初始化最小连接数 -->
             <property name="initialSize" value="${jdbc.pool.initialSize}"/>
             <!-- 获取设置连接池最小空闲连接数 -->
             <property name="minIdle" value="${jdbc.pool.minIdle}"/>
             <!-- 获取设置连接池最大并发使用连接数量 -->
             <property name="maxActive" value="${jdbc.pool.maxActive}"/>
             <!-- 获取设置连接最大等待时间 毫秒 -->
             <property name="maxWait" value="${jdbc.pool.maxWait}"/>
      </bean>
      <!-- 事务管理器TransactionManager,该类在spring-jdbc.jar包中 -->
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="druidDataSource"/>
      </bean>
      <!-- 配置开启基于注解的事务管理器的解析器,主要针对注解@Transactional -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
      <!-- 配置SqlSessionFactory,该类在mybatis-spring.jar包中 -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
          <property name="dataSource" ref="druidDataSource"/>
          <!-- 配置整合并加载mybatis框架的核心配置文件 -->
          <property name="configLocation" value="classpath:mybatis-config.xml"/>
      </bean>
      <!-- 配置基于MapperScannerConfigurer接口类扫描的方式来创建接口类的代理实现,该类在mybatis-spring.jar包中 -->
      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="basePackage" value="com.fawiec.etp.ssmproject.mapper"/>
         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
      </bean>
  </beans>

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标签的作用,通常是用来配置一些常量的,如开启缓存,懒加载,驼峰命令等配置 -->
   <settings>
     <!-- 配置开启驼峰命名的映射配置,默认值为false -->
      <setting name="mapUnderscoreToCamelCase" value="true"/>
      <!-- 配置延迟加载开关 -->
       <setting name="lazyLoadingEnabled" value="true"/>
       <setting name="aggressiveLazyLoading" value="false"/>
       <!-- 开启二级缓存的配置 -->
       <setting name="cacheEnabled" value="true"/>
   </settings>
   
    <!-- 配置映射 -->
      <mappers>
          <package name="com.fawiec.etp.ssmproject.mapper"/>
      </mappers>

</configuration>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.dburl=jdbc:mysql://localhost:3306/ceshi
jdbc.user=zhangsan
jdbc.password=123456
jdbc.pool.initialSize=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20
jdbc.pool.maxWait=60000

 

 

 6.写代码

技术分享图片

 

 

 LoginUser.java:

package com.fawiec.etp.ssmproject.domain;

public class LoginUser {

    private String userName;//用户名称
    private String loginPwd;//用户登录密码
    private Integer userType;//表示用户的类型,如 1:普通用户,2:管理员用户等
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getLoginPwd() {
        return loginPwd;
    }
    public void setLoginPwd(String loginPwd) {
        this.loginPwd = loginPwd;
    }
    public Integer getUserType() {
        return userType;
    }
    public void setUserType(Integer userType) {
        this.userType = userType;
    }
    @Override
    public String toString() {
        return "LoginUser [userName=" + userName + ", loginPwd=" + loginPwd + ", userType=" + userType + "]";
    }
    
    
}

LoginUserMapper.java

package com.fawiec.etp.ssmproject.mapper;

import org.apache.ibatis.annotations.Param;

import com.fawiec.etp.ssmproject.domain.LoginUser;

public interface LoginUserMapper {

    public LoginUser findUserByNameAndPwd(@Param("userName")String userName,@Param("loginPwd")String loginPwd);
}

LoginUserMapper.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.fawiec.etp.ssmproject.mapper.LoginUserMapper">
  <!--     public LoginUser findUserByNameAndPwd(@Param("userName")String userName,@Param("loginPwd")String loginPwd); -->
  <select id="findUserByNameAndPwd" resultType="com.fawiec.etp.ssmproject.domain.LoginUser">
    select * from tb_loginUser where userName=#{userName} and loginPwd=#{loginPwd}
  </select>
</mapper>

LoginUserService.java

package com.fawiec.etp.ssmproject.service;

import com.fawiec.etp.ssmproject.domain.LoginUser;

public interface LoginUserService {
    public LoginUser findUserByUserNameAndPassword(String userName,String loginPwd);
}

LoginUserServiceImpl.java

package com.fawiec.etp.ssmproject.service.impl;

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

import com.fawiec.etp.ssmproject.domain.LoginUser;
import com.fawiec.etp.ssmproject.mapper.LoginUserMapper;
import com.fawiec.etp.ssmproject.service.LoginUserService;

@Service
@Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.REQUIRED,readOnly = true)
public class LoginUserServiceImpl implements LoginUserService{
    
    @Autowired
    private LoginUserMapper loginUserMapper;
    public LoginUser findUserByUserNameAndPassword(String userName,String loginPwd) {
        return loginUserMapper.findUserByNameAndPwd(userName, loginPwd);
    }
    
}

LoginUserController.java

package com.fawiec.etp.ssmproject.controller;

import java.util.Map;

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

import com.fawiec.etp.ssmproject.domain.LoginUser;
import com.fawiec.etp.ssmproject.service.LoginUserService;

@Controller
@RequestMapping(value="/user")
public class LoginUserController {

    @Autowired
    private LoginUserService userService;
    
    @RequestMapping(value="/login",method = RequestMethod.POST)
    public String login(LoginUser user ,Map<String,Object> map) {
        System.out.println(user);
        LoginUser loginUser=userService.findUserByUserNameAndPassword(user.getUserName(), user.getLoginPwd());
        if(loginUser!=null) {
            map.put("info", "["+loginUser.getUserName()+"]登录成功!");
        }else {
            map.put("info", "用户名称或密码错误,登录失败!");
        }
        return "login/info";
    }
}

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <h1>用户登录页面</h1>
  <form action="${pageContext.request.contextPath }/user/login" method="post">
  用户名称:<input type="text" name="userName"/>
  登录密码:<Input type="password" name="loginPwd"/>
  <input type="submit" value="用户登录"/>
  </form>
</body>
</html>

info.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${info }</h1>
</body>
</html>

7.运行到server上,测试验证

Servers下增加Tomcat9 Server

技术分享图片

 

项目添加BuildPath,增加Server Runtime,选中新建的Tomcat9 Server完成。

技术分享图片

 

 项目右键,Run As,然后Run On Server,启动后

技术分享图片

 

输入账号密码,登陆成功:

 技术分享图片

 

【WEB应用】SSM框架搭建V2.0

原文:https://www.cnblogs.com/xiexieyc/p/14531347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!