ProeprotiesTest.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package com.sf.day22._01_properties;
  2. import com.sf.day22._01_properties.dt.Result;
  3. import com.sf.day22._01_properties.ex.LoginException;
  4. import com.sf.day22._01_properties.service.ILoginService;
  5. import com.sf.day22._01_properties.service.impl.LoginServiceImpl;
  6. import org.dom4j.Document;
  7. import org.dom4j.DocumentException;
  8. import org.dom4j.Element;
  9. import org.dom4j.io.SAXReader;
  10. import org.junit.Test;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.util.Properties;
  14. public class ProeprotiesTest {
  15. // 加载配置文件内容 resources db.properties 内容
  16. // Thread.currentThread().getContextClassLoader().getResourcesAsStream();
  17. @Test
  18. public void test() throws IOException {
  19. // 获取类加载器
  20. ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
  21. // 通过类加载器获取resources db.properties 内容转成输入流
  22. // 我们以后resources当中可能有很多配置文件 name 就是我们配置文件的名字
  23. // 第二种方式相对于第一种方式自己new File(路径) 更好, 因为我是没有在这里写死盘符路径的
  24. InputStream inputStream = contextClassLoader.getResourceAsStream("db.properties");
  25. // 创建Properties
  26. Properties properties = new Properties();
  27. properties.load(inputStream);
  28. // 获取配置文件当中账号和密码
  29. String username = properties.getProperty("username");
  30. String password = properties.getProperty("password");
  31. System.out.println(username);
  32. System.out.println(password);
  33. }
  34. /**
  35. * 1 创建Data 然后在Data 的静态代码块中初始化一个Map<Long,User>
  36. * 1 User(1L,"zhangsan","123")
  37. * 2 User(2L,"lisi","567")
  38. * 3 User(3L,"wangwu","666")
  39. * 2 在配置文件当中定义账号和密码
  40. * 3 完成登录功能
  41. * 要求:1 面向接口编程
  42. * 2 在接口实现类当中判断配置文件当中账号和密码 与 map 当中账号密码做对比
  43. * 3 如果成功 在数据{code:200,msg:"操作成功"};
  44. * 4 如果失败 {code:500,msg: "登录失败"}
  45. * 5 扩展:登录成功或者登录失败 往d:\\login.txt 当中添加 姓名 +"--" +时间 + 成功/失败
  46. * 注意如果账号密码不正确要求在方法方法中抛出LoginException("登录失败")
  47. * 面向对象: 静态代码块 接口 IO 自定义异常 trycach
  48. **/
  49. @Test
  50. public void test2() throws IOException, DocumentException {
  51. /**
  52. * 需要加载db.properties 文件内容
  53. */
  54. InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.xml");
  55. // Properties properties = new Properties();
  56. // properties.load(inputStream);
  57. // 采用的xml
  58. SAXReader saxReader = new SAXReader();
  59. Document document = saxReader.read(inputStream);
  60. // 1 获取根元素
  61. Element element = document.getRootElement();
  62. // 2 可以根据跟元素获取username 和password
  63. Element usernameEle = element.element("username");
  64. String username = usernameEle.getText();
  65. Element passwordEle = element.element("password");
  66. String password = passwordEle.getText();
  67. ILoginService loginService = new LoginServiceImpl();
  68. try{
  69. loginService.login(username,password);
  70. System.out.println(new Result(200,"登录成功"));
  71. }catch (LoginException e){
  72. e.printStackTrace();
  73. System.out.println(new Result(500,e.getMessage()));
  74. }finally {
  75. inputStream.close();
  76. }
  77. }
  78. }