已学spring基础整理

Spring

spring 初级规范

	2.1.创建新的工作空间,并且编码设置成UTF-8
	创建一个文件夹(必须英文)-- 打开Eclipse -- File -- Switch Workspace -- Other -- 点击Browse选择到刚刚
	创建的文件夹 -- 点击确定 -- 点击LaunchWindow -- Preferences -- 搜索框输入enco -- 找到workspace -- 主界面下拉 -- Text File Encoding修改成UTF-8
	-- 保存
	
2.2.配置jdk
	Window -- Preferences -- Java下拉 -- Installed JREs -- 主界面点击Add 
	-- 选择Standard VM -- 点击Next -- 点击JRE home的Directory按钮 选择到你的JDK安装目录
	-- 点击Finish即可
	勾选你所创建的jdk路径 -- Apply and Close
	
2.3.配置Tomcat
	Window -- Preferences -- Server -- Runtime Environments
	-- 点击Add -- 找到自己的Tomcat版本(8.5) -- Next按钮点击
	-- 点击Browse.. 找到Tomcat的安装路径
	-- JRE选择你的之前2.2步骤生成的jdk
	-- 点击Finish即可 -- 点击Apply and Close
	
2.4.创建服务实例
	点击Servers -- 点击No servers are available... -- 点击Finish即可 
	双击创建好的实例对象 -- Server Locations修改成Use Tomcat...
	-- Deploy path改成webapps
	Timeouts下拉 -- Start改成200
	最后保存即可

2.5.创建web项目工程
	点击左侧边栏右键 -- new -- project.. -- 选择Web文件夹 -- 点击Dynamic Web Project
	-- 点击Next -- 输入Project name -- Dynamic web module version选择3.1
	-- 点击Next -- 点击Next -- 勾选Generate web.xml...
	-- 点击Finish
		
2.6.创建包
	controller
	service
	dao
	bean:
		bean其实有很多文章在里面:
			pojo:和数据库对应表结构的类
			dto:数据传输对象,就像是你们二阶段的时候,request和response类
				三阶段的时候JsonMessage(主要用来保存服务器和客户端交互的类)
			vo:视图对象,一阶段的时候数据获取到之后,直接显示到表格,而这个数据
				所对应的类,叫做vo类
				
				人员信息表:id 姓名,性别,家庭住址,
					要求表格中找到 男女的人数 -》 Group by -》 保存到一个类中(性别,人数)
					-》 将这个类的集合发送到前端展示
					这里的这个类就属于vo
	factory
	util
	filter(*)
		
		
2.7.实现登录业务
	注意:所有的bean的类的类型,如果是基本数据类型,全部改成对应基本数据类型的封装类
		int - Integer
		short - Short
		boolean - Boolean
		byte - Byte
		long - Long
		float - Float
		double - Double
		char - Character
	注意:接口类不要写public修饰,并且增删改查的方法名分别用:
		insertXXX,deleteXXX,updateXXX, selectXXX或者countXXX
		
	注意:接口类中每一个方法写上注释
		/** 回车
		
	注意:每一个类都要写上注释
		Window -- Preferences -- Java -- Code Style -- Code Templates 
		-- 选择Comments -- Types -- 点击Edit按钮 -- 
		-- 最后点击Apply and Close
		-- 在类名上面写上/** 回车就出现了

我们看到的网站很多都是没有 xxx.html或者 xxx.jsp,
一般来说企业中不推荐把页面的后缀名展示出来,如果要展示后缀名也是自己定义的
http://localhost:8080/project0630/main.html
我们写的代码在权限验证方面还有bug
如果遇到500或者404的错误应该给予提示

解决方案:
1、不允许客户直接访问html
	只要将html放置在web-inf的文件夹下
	1.1.新建一个文件夹名字叫做html,生成在web-inf文件夹下
	1.2.将html文件复制到这个文件夹中
2、如何访问
	既然不能够直接访问,我们可以间接访问
	浏览器 -》login.html
	浏览器 -》servlet -》请求转发 -》 login.html -》 浏览器
	
	2.1.创建一个Servlet(PageServlet),并且在web.xml中注册,重写doGet方法
	2.2.在内部获取参数p用来判断转发到什么页面上,如果p为null,转发到登录页
		如果不为null,转发到对应的页面上
	

我们在地址栏直接输入主界面的url居然没有登录的情况下可以访问 - bug
解决方案:
	在servlet处进行session判断,如果没有登录去登录页
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String p = req.getParameter("p");
		// 如果没有携带参数,则跳转到登录页面
		if(p == null) {
			// 请求转发到登录页面
			req.getRequestDispatcher("WEB-INF/html/login.html").forward(req, resp);
		}else {
			HttpSession session = req.getSession();
			AdminInfo admin = (AdminInfo) session.getAttribute("admin");
			if(admin == null) {
				req.getRequestDispatcher("WEB-INF/html/login.html").forward(req, resp);
			}else {
				// 请求转发到对应的页面
				req.getRequestDispatcher("WEB-INF/html/" + p + ".html").forward(req, resp);
			}
		}
	}


当浏览器没有登录的时候,输入地址栏:
http://localhost:8080/project0630/page?p=main
因为权限问题就跳转到登录页面了,不允许访问主界面,然后我们去做登录,点击登录,登录成功后
并没有进行页面跳转还是在登录页面,只有浏览器点击刷新按钮的时候页面才会跳转。 - bug

原因:浏览器特色:节约用户的流量
	如果在html写上 <img src="tupian.jpg" /> 当浏览器解析到这句话的时候,浏览器会去
	访问服务器的这张图片,然后展示出来
	
	如果在html写上 <img src="tupian.jpg" /><img src="tupian.jpg" /> 浏览器只会找
	服务器要一次图片,因为图片的src的值相同

解决方案:
	只要在跳转的页面处添加一段随机数就可以解决,因为浏览器会认为是新的url,不会采用
	缓存了
	window.location.href = "page?p=" + data.location + "&h=" + Math.random();



我们需要跳转到登录页面,写法:http://localhost:8080/project0630/page
那么很多的企业项目,他不用写page就能跳转了,怎么办到的呢?
解决方案:
	在web.xml中的欢迎页面编写欢迎的url
	  <welcome-file-list>
		<welcome-file>page</welcome-file>
	  </welcome-file-list>
	

很多客户比较手痒,会在浏览器的地址栏进行修改,如果将p的值修改成我们后台没有的页面名字就会出现404的tomcat
提示,非常丑,如何解决?
解决方案:
	1、找一个好看的404页面
	2、将这个页面的html复制到WEB-INF/html中
	3、将这个页面的css和js复制到WebContent中
	4、测试
	5、将该页面在web.xml注册成为错误页面
		  <error-page>
			<error-code>404</error-code>
			<location>/page?p=err404</location>
		  </error-page>
	6、修改pageServlet代码:
		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			// TODO Auto-generated method stub
			String p = req.getParameter("p");
			if(p != null && p.equals("err404")) {
				req.getRequestDispatcher("WEB-INF/html/err404.html").forward(req, resp);
				return;
			}
			// 如果没有携带参数,则跳转到登录页面
			if(p == null) {
				// 请求转发到登录页面
				req.getRequestDispatcher("WEB-INF/html/login.html").forward(req, resp);
			}else {
				HttpSession session = req.getSession();
				AdminInfo admin = (AdminInfo) session.getAttribute("admin");
				if(admin == null) {
					req.getRequestDispatcher("WEB-INF/html/login.html").forward(req, resp);
				}else {
					// 请求转发到对应的页面
					req.getRequestDispatcher("WEB-INF/html/" + p + ".html").forward(req, resp);
				}
			}
		}
		
如果没有了后缀名,到底这个url是啥?所以一般来说说,企业中都会自定义一个后缀名
解决:
	将所有的url后面加上 .xxx
	推荐使用 .act

Mybatis

MyBatis其实就是一个持久层框架,主要就是封装了dao的写法。
MyBatis的底层使用到了 反射的机制,让他能够实例化对应的实现类,也就是说我们只需要写接口类就行了

Mybatis的使用

对应的配置
MyBatis好处:简化代码,稳定性,效率高
使用:
	官网:https://mybatis.org/mybatis-3/zh/getting-started.html
2.1.下载对应jar文件
2.2.将对应jar文件拷贝到项目中
	oracle的jar
	mybatis的jar
2.3.在src的目录下创建xml文件用来添加mybatis的配置信息
2.4.通过官网复制xml内容到这个mybatis-config.xml文件中

	<?xml version="1.0" encoding="UTF-8" ?> <!-- 配置信息 -->
	<!-- 约束 
		作用:代码补全
		主要是因为添加了"http://mybatis.org/dtd/mybatis-3-config.dtd"作为代码补全
		可以看出来其实是去找一个dtd的文件,这个文件提供了代码补全。
		
		问题:如果没网络是不是就不会提示了?
		解决方案:
			提前去下载这个文件就好了,提前下载到本地,然后通过Eclipse进行配置,只要是访问
			http://mybatis.org/dtd/mybatis-3-config.dtd路径,就去本地找这个文件,然后
			进行提示就好了嘛。
			
			1、通过浏览器地址栏下载这个文件
			2、将这个文件放在一个文件夹中(提示:之后会有很多这样的文件,统一放在这个文件夹中即可)
			3、Eclipse进行配置:
				Window -- Preferences -- XML下拉 -- XML Catalog -- 点击主界面的add按钮
				--  点击File System找到那个本地的dtd文件 -- 选择Key Type选择URI
				--  输入Key,这里的key就是对应的链接了 -- 点击ok保存即可
				-- 点击apply and close按钮
	-->
	<!DOCTYPE configuration
	  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
	  "http://mybatis.org/dtd/mybatis-3-config.dtd">
	<!-- 内容 -->
	<configuration>
	  <environments default="development">
		<environment id="development">
		  <transactionManager type="JDBC"/>
		  <dataSource type="POOLED">
			<property name="driver" value="${driver}"/>
			<property name="url" value="${url}"/>
			<property name="username" value="${username}"/>
			<property name="password" value="${password}"/>
		  </dataSource>
		</environment>
	  </environments>
	  <mappers>
		<mapper resource="org/mybatis/example/BlogMapper.xml"/>
	  </mappers>
	</configuration>
	
	注意:Eclipse对于xml的验证非常差,所以xml的验证关闭掉就好了
		Window -- preferences -- Validation -- 主界面下拉 
		-- 找到 XML Schema Validator
		-- 找到 XML Validator
		-- 取消这两个的所有勾选
		-- 点击Apply and Close


2.5.将这个xml文件的配置信息进行修改
	<property name="driver" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="jdbc:oracl:thin:@localhost:1521:orcl"/>
    <property name="username" value="JF191201"/>
    <property name="password" value="JF191201"/>

2.6.将mapper标签中没有引入的xml注释掉:
	<!-- <mapper resource="org/mybatis/example/BlogMapper.xml"/> -->
	
2.7.编写代码:
	String resource = "mybatis-config.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	System.out.println(sqlSessionFactory);
	
2.8.创建pojo类
2.9.创建dao接口类()注意:以后就叫做mapper
2.10.在dao的包下面创建对应的配置xml
	这里的xml的文件名必须和接口类的类名相同
2.11.复制配置文件的信息:
	<?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:命名空间,值:接口类的全限定名(包名+类名)
	 -->
	<mapper namespace="org.lgs.mapper.AdminInfoMapper">
		
		<!-- 
			resultMap:是用来告诉系统 字段和属性之间的关联性
				属性:type:关联到哪一个类(类的权限定名)
					 id:自己定义,唯一即可
				使用:在对应的select标签的resultMap属性中写上该resultMap的id值即可
		 -->
		<resultMap type="org.lgs.pojo.AdminInfo" id="adminInfo_resultMap">
			<!-- 
				id:是用来告诉系统 当前表的主键和属性的关系
					属性:column:主键的字段名
						  property:类的属性名
			 -->
			<id column="ADMIN_ID" property="adminId"/>
			<result column="ADMIN_NAME" property="adminName"/>
			<result column="ADMIN_PWD" property="adminPwd"/>
			<result column="ADMIN_STATE" property="adminState"/>
			<result column="ADMIN_CTIME" property="adminCtime"/>
			<result column="ROLE_ID" property="roleId"/>
		</resultMap>


	  <!-- 
		select是一个查询的标签
			属性:id:接口类中的方法名称
				  resultMap:对应的字段和属性之间的关联
					举例:我们的字段名:admin_name -> 属性名 adminName
						那么系统怎么知道这个是对应上的呢?所以我们需要对这个字段和属性的对应关系进行配置
						而这样的配置叫做 结果集映射,所以我们需要一个resultMap标签与之对应
			内容:sql语句
	   -->
	  <select id="selectAll" resultMap="adminInfo_resultMap">
		select * from admin_info
	  </select>
	  
	</mapper>

2.12.将这个文件添加到mybatis-config.xml中
	<mapper resource="org/lgs/mapper/AdminInfoMapper.xml"/> 
2.13.开始编写代码:
	String resource = "mybatis-config.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	System.out.println(sqlSessionFactory);
	
	SqlSession session = sqlSessionFactory.openSession();
	AdminInfoMapper mapper = session.getMapper(AdminInfoMapper.class);
	/*List<AdminInfo> admins = mapper.selectAll();
	System.out.println(admins);*/
	
	/*AdminInfo admin = new AdminInfo(null, "佳俊", "654321", null, null, 1L);
	Integer index = mapper.insertAdmin(admin);
	session.commit(); // 增删改业务都要commit
	System.out.println(index);
	session.close(); // 都要关闭session

Mybatis的动态查询

MyBatis动态标签
使用方式
	1.1.编写接口类方法:
			/**
			 * 多条件查询
			 * @param adminName 账户
			 * @param startDate 开始时间
			 * @param endDate 结束时间
			 * @param adminState 状态
			 * @param rb 分页对象
			 * @return 用户集合
			 */
			List<AdminInfo> selectByParam(@Param("name") String adminName, @Param("sdate") String startDate, 
					@Param("edate") String endDate, @Param("state") Integer adminState, RowBounds rb);
	
	1.2.编写xml的实现
		  <select id="selectByParam" resultMap="adminInfo_resultMap">
			select * from admin_info
			<where><!-- 这个where标签只要内部的sql片段都没有自动where标签删除where关键字,并且删除第一个and关键字 -->
				<if test="name != null">
					and admin_name like concat(concat('%', #{name}), '%')
				</if>
				<!-- 这里的大于号不能用,会被判定位标签,所以我们需要使用转义的字符代表 
					大于号  &gt;
					小于号 &lt;
				-->
				<if test="sdate != null">
					and admin_ctime &gt;= to_date(#{sdate}, 'YYYY-MM-DD')  
				</if>
				<if test="edate != null">
					and admin_ctime &lt;= to_date(#{edate}, 'YYYY-MM-DD')  
				</if>
				<if test="state != null">
					and admin_state = #{state}
				</if>
			</where>
		  </select>
	
	1.3.测试:
		// 实现多条件查询:
		// 要求查询:用户名模糊查询, 创建时间的区间,状态 -> 查询条件一共4个 + 分页
		List<AdminInfo> admins = mapper.selectByParam("z", null, null, null, new RowBounds(0, 2));
		System.out.println(admins);
		
	可以用,并且编码的效率也能提高,这个东西归功于mybatis的动态标签
	其他的动态标签:
		链接:https://mybatis.org/mybatis-3/zh/dynamic-sql.html
	
		where if
		choose、when、otherwise -》 相当于java的 if else if else
		trim:
			删除或添加某个关键字或词语
			首先我们要先说一下sql的片段写法:
			<!-- sql标签:主要用于封装某些常见的sql语句片段 -->
			<sql id="base_columns">
				admin_name,
				admin_pwd,
				admin_state,
				admin_ctime,
				role_id,
				admin_id
			</sql>
			
			<select id="selectAll" resultMap="adminInfo_resultMap">
				select 
				<include refid="base_columns"/> 
				from admin_info
			</select>
			
			
			所以在trim使用中可以这样用:
			<!-- sql标签:主要用于封装某些常见的sql语句片段 -->
			<sql id="base_columns">
				<!-- 
					suffixOverrides="," 删除最后一个看到的逗号
					prefixOverrides="," 删除第一个看到的逗号
					prefix="," 在最前面加上一个逗号
					suffix="," 在最后面加上一个逗号
				 -->
				<trim suffixOverrides="," >
					admin_name,
					admin_pwd,
					admin_state,
					admin_ctime,
					role_id,
					admin_id,
				</trim>
			</sql>
			
		set:
			  <update id="updateAdmin">
				update admin_info 
				<!-- 会将最后一个看到的逗号去掉,这里可以加很多修改内容,
				如果传递进来是null,就不会加上片段了,用法和where很像 -->
				<set>
					<if test="name != null">
						admin_name = #{name},
					</if>
				</set>
				<where>
					<if test="id != null">
						and admin_id = #{id}
					</if>
				</where>
			  </update>
		
		
		foreach:
			接口类:
					/**
					 * 通过id的集合找到用户信息
					 * @param adminIds id集合
					 * @return 用户集合
					 */
					List<AdminInfo> selectByIds(@Param("list") List<Long> adminIds);
			
			xml:
				<select id="selectByIds" resultMap="adminInfo_resultMap">
					select 
					<include refid="base_columns"/>
					from admin_info
					<where>
						<if test="list != null">
							<!-- and admin_id in(100, 101)  -->  
							and admin_id
							<!-- 
								foreach:用来遍历集合数据或数组数据
									属性:collection 传递进来的集合变量名称
										  item 遍历的每一项的别名,这里可以自己定义
										  open 在遍历之前添加的句子(内容)
										  close 在遍历最后添加的句子(内容)
										  separator 遍历的每一项变量之间的间隔符
							 -->
							<foreach collection="list" item="adminId" open="in(" close=")" separator=",">
								#{adminId}
							</foreach>
						</if>
					</where>
				</select>
			
			测试:
				
		
	插入的主键返回:
		业务:插入一条用户信息,并且返回用户的主键id:
		做法1:
			首先先查询到序列的下一个值是多少 -》 得到序列值
			然后通过序列值进行插入用户信息
			
			mybatis推荐
			
			  <insert id="insertAdmin">
				<!-- selectKey:用来查询主键
						属性:order:在执行插入语句之前查询selectKey的sql
							 keyProperty:搜索到的主键的值保存在 a.adminId(xx变量的属性中)
							 resultType:返回的主键类型
						内容:查询的sql语句
						注意:插入的sql的主键的插入信息就应该是 #{a.adminId}
				 -->
				<selectKey order="BEFORE" keyProperty="a.adminId" resultType="long">
					select seq_admin_info.nextval from dual
				</selectKey>
				<!-- insert into admin_info values(seq_admin_info.nextval, #{a.adminName}, #{a.adminPwd}, 1, sysdate, #{a.roleId}) -->
				insert into admin_info values(#{a.adminId}, #{a.adminName}, #{a.adminPwd}, 1, sysdate, #{a.roleId})
			  </insert>
			  
			测试:
				AdminInfo admin = new AdminInfo(null, "佳俊", "654321", null, null, 1L);
				Integer index = mapper.insertAdmin(admin);
				session.commit(); // 增删改业务都要commit
				System.out.println(index);
				System.out.println(admin.getAdminId() + "主键是这个");
				session.close(); // 都要关闭session
			
		做法2:
			插入用户信息,
			查询当前用户信息表的主键最大值 -》 得到用户主键id
			不推荐使用

Mybatis的规范

联表等问题的解决方案:
案例:表格显示:用户信息管理的数据展示: 用户名、创建时间、状态(中文)、角色名(中文)、操作
	我们在数据库的表中字段:admin_name、admin_ctime、admin_state、role_id
	其中admin_state、role_id问题比较大,
		admin_state解决方案就是将参数表数据放到浏览器端,浏览器端去自行匹配
		role_id 只能通过联表来解决了
解决方案:
	市面上有代码生成器 - 生成的是pojo类以及mapper - mapper仅限于单表
	我们的案例只能通过联表解决,写在哪里?
		1、adminInfoMapper中
		2、新建一个接口类和xml文件来写
	推荐用第二种方案
	
	如果说字段做了修改,你有代码生成器,怎么做?是不是重新生成xml和接口类
	那么如果用第一种方案,将联表的sql写在adminInfoMapper中,重新生成后就没了
	所以我们使用方案2来实现功能
	
问题:只要联表就新建一个吗?
	一般来说。resultMap标签一个xml写一个,那么只要搜索是这个resultMap的数据,都可以写在这个xml中
所以只要是联表就需要新建一个xml和接口类来编写是最好的


问题:pojo类怎么办?
	在vo类中创建一个关联的类,命名:主要类Rel 或 主要类Vo -》 AdminInfoVo
	这个类需要继承于主要类 -》 AdminInfoVo extends AdminInfo
		如果客户要求:添加一个字段或修改一个字段,如果你不继承,要改两个类
		如果你用了继承只要修改AdminInfo类的属性即可
		
		public class AdminInfoVo extends AdminInfo {
			private String roleName;
			-- get set
		}

封装

1、修改ConnUtil 和 SqlSessionUtil,因为上课讲过Connection和SqlSession可以看成一样的东西
所以Connection的封装在ConnUtil,SqlSession也应该进行封装,封装到SqlSessionUtil中
2、封装Dao
将dao中的接口类,复制到mapper包中,修改文件名,抽象方法也要响应进行修改(去掉connection参数,@Param等)
创建对应的xml,编写mapper的xml文件
将mybatis-config.xml复制过来,记得添加引入信息
3、在service层调用sqlsession

Maven

Maven是什么

是apache做的一款软件

使用

			官网:http://maven.apache.org/index.html
下载:浏览器地址栏输入官网 -- 点击左侧边栏 -- Download -- 下拉找到Files
	  -- 找到	apache-maven-3.6.3-bin.zip -- 点击下载即可
	1.创建一个文件夹,将zip文件复制过去,解压 (这里文件名叫做 jf1912_maven)
	2.需要熟悉maven中每个文件的功能
	3.进行配置:
		名词:
			远程仓库
			本地仓库
			依赖
			中央仓库
			maven项目工程
		原理:
			maven其实是一个软件,负责帮助我们下载对应的jar文件,那么我们其实在
			软件开发过程中一直都会涉及到文件服务器这个概念,maven需要下载的jar
			文件都存放在一个文件服务器中。
			这个文件服务器在maven这边叫做 远程仓库。
			因为maven是国外人发明的,所以远程仓库是国外链接,所以灰常慢。
			国内就有企业去做一个国内的远程仓库 - 企业名字叫做 阿里通过maven从远程仓库将jar包下载下来之后,你需要指定一个文件夹来存放
			如果不指定,放在c盘的用户目录的.m2文件夹下。
			那么这个存放jar包的文件夹 在maven这边叫做 本地仓库
			在企业中,很多时候每个程序员都需要去远程仓库下载jar文件,如果网速
			比较慢,那么就要下载很久,所以为了节约效率,所以企业做了一个内网的
			服务器,在上面创建一个文件夹用来存放从maven下载的jar
			那么这个内网的服务器的文件夹 在maven这边叫做 中央仓库
			
			远程仓库仅仅是一个链接,如果需要下载jar文件需要指定到下载这个jar文件的
			路径,而这样的路径在maven中叫做dependency(依赖)
			
			那么既然maven能够封装jar文件,那么他的项目工程的结构就不能是我们之前
			项目工程结构,而是maven项目工程
			
			
		点击软件中的conf文件夹 -- 打开编辑settings.xml文件
		-- 配置本地仓库
			在jf1912_maven文件中新建一个文件夹,叫做:repository
			在xml的55行(大概)添加:<localRepository>指定到repository的路径</localRepository>
		-- 配置远程仓库
			在mirrors标签中添加:(大概在161行)
				<mirror>
					<id>alimaven</id>
					<name>aliyun maven</name>
					<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
					<mirrorOf>central</mirrorOf>
				</mirror>
		-- 配置maven自身的jdk版本
			在profiles标签中添加:(大概在222行)
				<profile>
					<id>jdk-1.8</id>
					<activation>
						<activeByDefault>true</activeByDefault>
						<jdk>1.8</jdk>
					</activation>
					<properties>
						<maven.compiler.source>1.8</maven.compiler.source>
						<maven.compiler.target>1.8</maven.compiler.target>
						<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
					</properties>
				</profile>
		-- 保存退出即可
			
			
	4.下载
		我们如果需要maven下载jar文件,那么需要知道他的命令结构
		如果你想要的一个可视化的界面让maven下载,那么你就需要配置maven和Eclipse的关系,
		让eclipse帮你通过maven来下载
		
		配置Eclipse和maven的关联:
			Window - preferences - maven下拉 - user settings点击进去
			- 选择Global Settings的Browse按钮找到刚刚配置的settings.xml文件
			- 选择User Settings的Browse按钮找到刚刚配置的settings.xml文件
			- 点击Update Settings(多点几下)
			- 点击Apply and Close
		
	5.创建maven项目工程(web项目工程)
		点击左侧空白处 -- new -- project... -- Maven文件夹下拉
		-- 选择Maven Project -- 点击Next按钮 -- 勾选Create a simple project...
		-- 点击Next按钮 -- 输入Group Id(包名 org.lgs) -- 输入Artifact Id(项目名)
		-- 修改Version(修改成0.0.1)
		-- 修改Packaging修改成war
		-- 点击Finish即可
		
		注意:第一次他会帮助我们下载需要的jar包,所以会很慢
		
		如果断网:
		需要将本地仓库的文件全部删掉
		点击项目名右键 -- maven -- update project
		
		弄好之后maven的web项目工程就是会报错的
		解决方案:
			点击src -- 点击main -- 在webapp下创建WEB-INF文件夹
			-- 将之前3.1版本的web项目的web.xml文件复制到WEB-INF文件夹
			-- 错误解决
		注意如果没有解决点击项目名右键 -- maven -- update project
		
	6.导入jar
		其实就是配置对应jar的依赖文件路径
		在pom.xml文件中进行配置:
			创建dependencies标签,到时候找到的依赖全部写在里面
			找依赖的官网:https://mvnrepository.com/
			
		注意:maven的项目工程并没有导入servlet的jar包以及jsp等功能的jar包,所以这两个也要引用进来
		基本的jar配置:
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>4.0.1</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
				<version>1.2</version>
			</dependency>
			<dependency>
				<groupId>com.oracle</groupId>
				<artifactId>ojdbc6</artifactId>
				<version>11.2.0.4.0-atlassian-hosted</version>
			</dependency>
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>fastjson</artifactId>
				<version>1.2.57</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis</artifactId>
				<version>3.5.5</version>
			</dependency>
		
		注意:如果下载中出现失败,则他会在<dependency>标签位置报错
		解决方案:
			将本地仓库中对应的版本的文件夹删掉 -- 点击项目名右键 -- maven -- update project
	
	7.运行项目
		和web项目启动是一致的
		
	8.打包
		在pom.xml中添加jdk的版本配置:
			<build>  
				<finalName>你的项目工程名称</finalName>
				<pluginManagement>  
					<plugins>  
					 <plugin>    
						<groupId>org.apache.maven.plugins</groupId>    
						<artifactId>maven-compiler-plugin</artifactId>    
						<configuration>    
							<source>1.8</source>    
							<target>1.8</target>    
						</configuration>    
					</plugin>    
				   </plugins>  
				</pluginManagement>  
			</build>  
		
		点击项目名右键 -- run as -- Maven Install

SpringBoot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值