java中SSM环境搭建

SSM环境搭建过程

mybatis,spring,SpringMVC三大框架整合(idea工具)

1、引入依赖

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jcl</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.2</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm</artifactId>
      <version>3.3.1</version>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2.2</version>
    </dependency>

    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.17.1-GA</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.7</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.1.1</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.1</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.8</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.8</version>
    </dependency>
	<!--文件上传依赖-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
    </dependency>
    </dependencies>
<!--绑定资源目录-->
 </pluginManagement>

    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>

  </build>
</project>

数据库建立

数据库:
SET FOREIGN_KEY_CHECKS=0;

	-- ----------------------------
	-- Table structure for employee
	-- ----------------------------
	DROP TABLE IF EXISTS `employee`;
	CREATE TABLE `employee` (
	  `empid` int(11) NOT NULL AUTO_INCREMENT,
	  `empName` varchar(50) DEFAULT NULL,
	  `partment` varchar(50) DEFAULT NULL,
	  `picture` varchar(50) DEFAULT NULL,
	  `state` varchar(50) DEFAULT NULL,
	  PRIMARY KEY (`empid`)
	) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

	-- ----------------------------
	-- Records of employee
	-- ----------------------------
	INSERT INTO `employee` VALUES ('1', '张三', '1', 'logo.jpg', '离职');
	INSERT INTO `employee` VALUES ('2', '李四', '2', 'bieshu.png', '离职');
	INSERT INTO `employee` VALUES ('6', '王五', '2', 'zs.png', '在职');
	INSERT INTO `employee` VALUES ('10', 'cc', '1', 'cc.jpg', '在职');
	INSERT INTO `employee` VALUES ('11', '', '1', '308f94e3-8aa7-4c44-889a-e206e7f48550_c#.txt', '在职');

2、 配置文件目录

在这里插入图片描述

3、建立配置文件
3.1 建立jdbc.properties
jdbc.dr=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8
jdbc.username=root(自己数据库账户)
jdbc.password=自己数据库密码
3.2 新建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>
    <!--为实体类指定别名 自己指定自己包名-->
    <typeAliases>
        <package name="com.xxx.entity"/>
    </typeAliases>

    <!--注册映射文件 自己指定自己的dao层映射文件-->
    <mappers>
        <package name="com.xxx.**.dao"/>
    </mappers>
</configuration>
3.3 新建spring-ds.xml
    <!--注入db.properties-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.dr}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

3.4新建spring-mvc.xml
 <!--注册组件扫描器,扫描@Controller-->
   <context:component-scan base-package="com.aynu.**.controller"/>

    <!--MVC注解驱动-->
    <mvc:annotation-driven/>

    <!--配置登录拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.hrm.filter.LoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
 <!--文件解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="104857600" />
        <property name="maxInMemorySize" value="4096" />
    </bean>
3.5 spring-mybatis.xml,spring整合mybatis
<!--生成sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>

    <!--生成dao接口的动态代理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.aynu.**.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
3.6 把service注入到spring,新建spring-service.xml
<!--注册组件扫描器,扫描@Service-->
    <context:component-scan base-package="com.aynu.**.service"/>
3.7 注册事务管理器,新建spring-tx.xml
<!--注册平台事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--事务通知-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="find*" isolation="DEFAULT" propagation="REQUIRED"/>
            <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
            <tx:method name="modify*" isolation="DEFAULT" propagation="REQUIRED"/>
            <tx:method name="remove*" isolation="DEFAULT" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!--AOP切面配置-->
    <aop:config>
        <aop:pointcut id="myPC" expression="execution(* *..service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="myPC"/>
    </aop:config>

4、web.xml配置

<!--注册中央调度器-->
  <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:spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <!--编码过滤器-->
  <filter>
    <filter-name>encodinFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodinFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--登录验证过滤器-->
  <!--<filter>
    <filter-name>loginFilter</filter-name>
    <filter-class>com.hrm.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>-->

5、过滤器(拦截器过滤器任选其一,我首选过滤器)

目的和作用:
防止用户越过登陆验证,直接输入地址进行操作。要想使用该网站,必须拦截登陆请求

/*
* 采用过滤器拦截越域用户
* 方法:通过获取session域中是否存在对象
* */
public class MyLoginFilter implements Filter {
	//此处应该放掉登陆界面和登陆的处理器
    private  String[] need_uri = {"/index.jsp","/loginForm.jsp","/login.do"};
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //index.jsp,loginForm.jsp,login.do放掉这三个
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //获取每次的请求路径
        String strURI = request.getRequestURI();
        //循环查看请求地址是否包含上三个
        boolean flag = false;
        for (String str : need_uri
        ) {
            //如果包含,即已经登陆;防止空指针异常
            if (strURI.contains(str)) {
                //放行
                flag = true;
                filterChain.doFilter(request, response);
                break;
            }
        }
        if (!flag) {
            //不包含 拦截
            User login_user = (User) request.getSession().getAttribute("loginUser");
            if (login_user != null) {
                filterChain.doFilter(request, response);
            } else {
                request.setAttribute("login_error", "你还未登陆请登陆");
                //请求转发
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
        }
    }
}

6.拦截器

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestURI = request.getRequestURI();
        if (requestURI.endsWith("/login.do")){
            return true;
        }
        User login_user = (User) request.getSession().getAttribute("login_user");
        if (login_user != null){
            return true;
        }else {
            request.setAttribute("login_error","您还未登录,请登录后访问!");
            request.getRequestDispatcher("/index.jsp").forward(request,response);
            return false;
        }
    }
}

7、用户登陆和注销操作

@RequestMapping("/login.do")
    public String login(User user, HttpSession session, Model model){
        //System.out.println(user);
        User login_user = userService.findUserByLoginnameAndPassword(user);
        //System.out.println(login_user);
        if (login_user != null){
            session.setAttribute("login_user",login_user);
            return "/jsp/main.jsp";
        }else {
            model.addAttribute("login_error","用户名或密码不正确,请重新输入!");
            return "/index.jsp";
        }
    }

    @RequestMapping("/logout.do")
    public String logout(HttpSession session,Model model){
        session.removeAttribute("login_user");
        model.addAttribute("login_error","退出成功,请重新登录!");
        return "/index.jsp";
    }

8、代码层建立


	三层架构环境搭建:	
	entity实体类:
	实体类:
			@Data
			public class Employee {
			   private Integer empid;
			   private String empName;
			   private Integer partment;
			   private String picture;
			   private String state;
			}

		dao包:
			dao接口:
				public interface EmployeeDao {
				List<Employee> selectAllEmployees();
				}
			dao.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.xja.ssm.dao.EmployeeDao">
					<select id="selectAllEmployees" resultType="Employee">
						select * from employee
					</select>
				</mapper>
		service层:
			service
				public interface EmployeeService {
				List<Employee> findAllEmployees();
				}

			serviceImpl:
				@Service
				public class EmployeeServiceImpl implements EmployeeService {
					@Resource
					private EmployeeDao employeeDao;
					@Override
					public List<Employee> findAllEmployees() {
						return employeeDao.selectAllEmployees();
					}
				}
		controller层:
			@Controller
			public class EmployeeController {
				@Autowired
				private EmployeeService employeeService;
				@RequestMapping("/findAllEmp.do")
				public String findAllEmp(Model model){
					List<Employee> employeeList = employeeService.findAllEmployees();
					model.addAttribute("emps",employeeList);
					for(Employee emp:employeeList) {
						System.out.println(emp);
					}
					return "index.jsp";
				}
			}
		index.jsp:
			<a href="/findAllEmp.do">查看所有的员工</a><br>
			${emps}	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值