eclipse整合ssm运行初体验

众所周知,eclipse由于免费,各方面的方便程度确实不如idea,但是这时候老板偏偏让你用eclipse运行ssm项目,咱还是得会呀,卷死那些不会的!
先初始化一个dynamic web project ,在这里我就遇到了我的第一个bug。因为我没有这个所谓的动态web工程,不过还好,略微一百度,就解决了。

  1. 查看版本号。Help->About Eclipse IDE
    eclipse整合ssm运行初体验_第1张图片
    eclipse整合ssm运行初体验_第2张图片
    我的版本号是e.20.0,划重点,因为强制要求下载的要和自己版本一样。
    在Help->Install New SoftWare中搜索 Oxygen,然后一系列next全安装上。
  2. 在eclipse marketplcae 里面把关于Spring的三个插件全部下载上…其实我也不知道有啥用,但是下着呗,万一嘞。
    eclipse整合ssm运行初体验_第3张图片

都知道eclipse 下载的有多慢,我等的很无语,甚至都在思考为什么eclipse为什么打开内置网页可以这么慢,没有缓存吗?为Eclipse以后可以快一点而学习ssm’项目?
3.然后这时候基本上就有一个Dynamic web project的选项,没找到的在other里面找找,new一下子,随便起个名字。
这是大致的工程目录,可能有不同,因为我删了一点,但是本质一些就行,有web目录,也有java目录。记得有些文件要左键->build path->as a source folder.
eclipse整合ssm运行初体验_第4张图片

4.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

  <display-name>MybatisTestSSM</display-name>
  <!-- 
  // spring configure needer for ContextLoaderListener  
   -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- BootStraps the root web application context before servlet -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 <!-- springMVC配置 -->
 <!-- The front controller of the spring web application , res -->
 <servlet>
 	<servlet-name>spring</servlet-name>
 	<servlet-class>org.springframe.web.servlet.DispatcherServlet</servlet-class>
 	<load-on-startup>1</load-on-startup>
 </servlet>
 
 <!-- map all requests to the DispatcherServlet for handling  -->
 <servlet-mapping>
 <servlet-name>spring</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping> 
</web-app>

注意:Spring和SpringMVC中的servlet-name应相同

SpringMVC的配置文件spring-servlet.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-4.0.xsd
         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"         >
         <!-- 
          -->
          <!-- SpringMVC controll all websites  jump logic-->
         <!-- 只扫描控制器 -->
         <context:component-scan base-package="com.company" use-default-filters="false">
         		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter>
         </context:component-scan>
         
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         	<property name="prefix" value="/WEB-INF/pages"></property>
         	<property name="suffix" value=".jsp"></property>
         </bean>
         
         <mvc:annotation-driven></mvc:annotation-driven>
         <mvc:default-servlet-handler/>
</beans>

Spring的配置文件applicationContext.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:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
  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/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
  
  ">

<!-- Spring manage all services 除了控制器的其他组件-->
<context:component-scan base-package="com.company">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>



<context:property-placeholder location="classpath:dbconfig.properties"/>
<!-- Spring控制业务逻辑 数据源 事务控制 aop-->
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="jdbcUrl" value="${jdbc.url}"/>
  <property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driver}"> </property>
</bean>
<!-- 事务管理器:使用事务管理器管理数据库-->
<bean id="DataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"> </property>
</bean>
<!-- 开启基于注解的事务-->
<tx:annotation-driven transaction-manager="DataSourceTransactionManager"/>

<!-- create sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="datasource"></property> 
  <property name="configLocation" value="classpath:mybatis-config.xml"></property>
  <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"></property>
  
</bean>
<!-- 扫描所有mapper接口的实现,让mapper能够自动注入-->
<mybatis-spring:scan base-package="com.company.dao"></mybatis-spring:scan>

<!-- comvbined with mybatis
-->
</beans>

这里有一个小bug,一般情况下,在.xml页面下应该还有一个namespace,可以选择引入的命名空间,但是我没有,我只有design和source,我略微百度了一下,说是要下载sts工具,废了很大劲头的终于下载了,但是他妈的还是没有这个所谓的namespace。我很无语。
因为这个sts工具需要与eclipse版本对应,不同版本的sts还不同(这无语的设计…),而且还没有一个完整的页面记录了所有版本的sts工具(或许我没搜到,别人放上去的页面都404了)。而且下载的后缀是update.zip,我用别的博主的方法,获取最新版本的超链接后更改到自己的版本上,但是一直404,可能是根本没有这个版本,反正很无语,我建议如果下载sts工具,直接百度自己eclipse对应的sts工具,这样比自己改来改去改了个404要靠谱,多搜几个网页肯定有,我是这个方法获取的。我的版本是e4.20.0。
链接:https://pan.baidu.com/s/1nfB3iYo0ZuC9cXFOw_rdnA
提取码:9lba
直接下载后不用解压,在install new software中离线打开再一顿next即可。
但是下载了还是没有namespace,可无语我当时的心情,但是有总比没有好吧…
不过也没事,只不过namespace我要一个一个引,还不算太关键。

补(2021.11.6):

引入成功了,具体还是在于sts工具和eclipse marketplace的三个关于spring的插件,下载成功后 模块处于WEB 在file association中设置xml的默认格式为spring config.那个就可
如果eclipse下载速度太慢,建议更改镜像而不是干等,改成国内镜像,稍微一百度就有了。

找到namespace设置了,右键项目点properties

eclipse整合ssm运行初体验_第5张图片

mybatis-config.xml mybatis全局配置文件

<?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>
	<properties resource="dbconfig.properties"></properties>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"></setting>
		<setting name="cacheEnabled" value="true"></setting>
	</settings>
	<typeAliases>
		<typeAlias type="com.company.mybatis.bean.Employee"
			alias="emp"></typeAlias><!-- 默认别名为类名,可以使用alias属性值设置 -->
		<!-- 对于同一个包下的多个文件批量起别名 默认为类名 -->
		<package name='com.company.mybatis.bean'></package>
		<!-- 如果包下的包下的文件与包下的文件聪明 可以使用@Alias注解来起别名 -->
	</typeAliases>

	<databaseIdProvider type="DB_VENDOOR">
		<property name="MySQL" value="mysql" />
		<property name="Oracle" value="oracle" />
		<property name="SQL Server" value="sql server" />
	</databaseIdProvider>


</configuration>

dbconfig.properties 数据库的相关配置

jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=88888888
jdbc.driver=com.mysql.jdbc.Driver

配置文件OK了,接下来就是写三层代码了。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>首页</title>
</head>
<body>
<a href="getEmp">查看列表</a>
</body>
</html>

首页被控制器拦截后,进入index.jsp页面

package com.company.controller;
@Controller
public class EmployeeController {
	@Autowired
		EmployeeService service;
@RequestMapping("/")
public String index() {
	return "index";
}	
		@RequestMapping("getEmp")
		public String getEmp(Map<String,Object> map) {
			List<Employee> list = service.getEmps();
			map.put("emp", list);
			return "list"			
		}

}

sevice层方法

@Service
public class EmployeeService {
	@Autowired
	private EmployeeMapper mapper;
	
		public List<Employee> getEmps() {
			return mapper.getEmp(); 
		}
}

dao层接口

package com.company.dao;

import java.util.List;

import com.company.bean.Employee;
@Repository
public interface EmployeeMapper {
	public List<Employee> getEmp();

}

对应的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">
<!-- namespace:名称空间 id:唯一标识 resultType:返回值类型,查询记录封装的类型 #{id}从传递过来的参数中取出id 
	public Employee getEmpById(Integer id); -->
<mapper namespace="com.company.mybatis.dao.EmployeeMapper"><!-- 指定为接口的全类名 -->

<select  id="getEmp" resultType="list">
  select * from tbl_employee
</select>
</mapper>

对应的Employee方法类

package com.company.bean;


import java.io.Serializable;

public class Employee implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer id;
	private String lastName;
	private String email;
	private String gender;

	//alt+shift+s
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public Employee(Integer id, String lastName, String email, String gender) {
		super();
		this.id = id;
		this.lastName = lastName;
		this.email = email;
		this.gender = gender;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
	}

}

运行的时候遇到了第三个bug–>>Tomcat程序启动不起来。报错信息模糊不清,我当时可能也犯困了,闷着头找了可多,都没找到点,睡觉去了。
第二天清醒了,看了看console,他妈的,缘来问题在console输出,我傻逼了。
-Djava.endorsed.dirs=D:\Tomcat 9.0\endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
意思就是我的Tomcat版本和我的jdk版本不对应,因此不行。他妈的,又是版本问题。然后就自己找配置。
windows=>properties=>Server=>Runtime Environment这是Tomcat
eclipse整合ssm运行初体验_第6张图片

windows=>properties=>Java=>Installed JRES
eclipse整合ssm运行初体验_第7张图片

windows=>properties=>Java=>compiler
eclipse整合ssm运行初体验_第8张图片
我修改过了,jdk8和Tomcat9v是可以的,但是我最开始配置的是jdk16 很无语。
去官网又下jdk8,然后配置一下,就可以了,但是有个问题就是…java下载后会有个弹窗询问你是否允许自更新,妈的,不允许!我应该是之前以为电脑管家又自作主张把项目当病毒删除,所以没看就点确定了。家人们,不要允许自更新。
一系列操作后,我还是不行,运行的时候报错方式确实变了,但是会提醒我java 9 is not supported.java9? tmd哪来的java9.
来来来,右键项目,打开properties,点击java,点开java Complier,哈哈,他妈的,项目自己给自己配了个java9,一整个无语住了。改呗,顺便把java build path中的java9移除,换上自己的。
好了,一顿操作猛如虎,这样Tomcat就可以咯。对了对了,还有最后一个配置。双击server
eclipse整合ssm运行初体验_第9张图片
把location改成自己的,deploy path改一改,ok。开始开心的ssm吧。
eclipse整合ssm运行初体验_第10张图片
《开心的ssm》
全他妈报错…
找到报错原因了,一般都在第一个caused by 吃饭去了家人们

你可能感兴趣的:(ssm,eclipse,ssm)