diff --git a/src/main/java/controller/SelectServlet.java b/src/main/java/controller/SelectServlet.java index 532acb2..2a1a13c 100644 --- a/src/main/java/controller/SelectServlet.java +++ b/src/main/java/controller/SelectServlet.java @@ -1,8 +1,6 @@ package controller; -import java.io.FileWriter; import java.io.IOException; -import java.io.Writer; import java.util.List; import javax.servlet.ServletException; @@ -15,6 +13,16 @@ import utils.*; /** * Servlet implementation class SelectServlet */ + +/** + * service层(业务层):封装通用的业务逻辑,操作;与数据层的交互。(本例省略) + * dao层(数据层):主要做数据持久层的工作,封装负责与数据库进行操作的代码。 + * entity :实体类。 + * utils :封装工具类。 + * 前端->controller->dao->controller->前端 + * @author markma + * @date 修改时间:2021年8月4日 上午9:01:56 + */ public class SelectServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -39,26 +47,43 @@ public class SelectServlet extends HttpServlet { */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + /** + * 1.获取前端输入,转为UTF-8 + */ String undName = new String(request.getParameter("Name").getBytes("iso-8859-1"), "utf-8"); String undPro = new String(request.getParameter("Pro").getBytes("iso-8859-1"), "utf-8"); + if(undName != null || undPro != null) { + /** + * 2.拆分传入的Name和Properties + */ NameProDivider divNamePro = new NameProDivider(undName,undPro); divNamePro.divideName(); divNamePro.dividePro(); - + /** + * 3.根据拆分后的Name找对应的hero + */ HeroDao hd = new HeroDao(); List heroList = hd.find(divNamePro.getDividedName()); + /** + * 4.对找到的hero,显示出用户要求的properties + */ PropertiesDao pd = new PropertiesDao(); String[] printHeroInfo = pd.find(heroList, divNamePro.getDividedProperties()); + /** + * 5.将要显示的字符串写到返回网页里面 + */ response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain"); - ReturnWriter returnwriter = new ReturnWriter(); returnwriter.write(printHeroInfo); + /** + * 6.返回查询网页 + */ request.getRequestDispatcher("return.jsp").forward(request, response); } diff --git a/src/main/java/dao/HeroDao.java b/src/main/java/dao/HeroDao.java index 7e98f85..54b8c2c 100644 --- a/src/main/java/dao/HeroDao.java +++ b/src/main/java/dao/HeroDao.java @@ -4,13 +4,29 @@ import java.util.List; import org.apache.ibatis.session.SqlSession; import entity.*; import utils.*; +/** + * 英雄数据库处理 + * 通过名字在数据库找到相应的英雄 + * @author markma + * @date 修改时间:2021年8月4日 上午9:13:16 + */ public class HeroDao { + public List find(String[] dividedName) { + /** + * 1.列表初始化 + */ List heroList = new ArrayList(); + /** + * 2.数据库连接 + */ SqlSession session = DBUtils.getConnection(); HeroMapper mapper = session.getMapper(HeroMapper.class); + /** + * 3.查找 + */ for(String name:dividedName) { if(name.equals("-a")) @@ -26,6 +42,9 @@ public class HeroDao } } } + /** + * 4.提交请求,返回查找值 + */ session.commit(); return heroList; } diff --git a/src/main/java/dao/PropertiesDao.java b/src/main/java/dao/PropertiesDao.java index e4096fc..5b3a8d7 100644 --- a/src/main/java/dao/PropertiesDao.java +++ b/src/main/java/dao/PropertiesDao.java @@ -2,12 +2,24 @@ package dao; import java.util.List; import entity.Hero; +/** + * 属性数据库处理 + * 通过英雄找到对应的属性值,储存到字符串数组中 + * @author markma + * @date 修改时间:2021年8月4日 上午9:15:23 + */ public class PropertiesDao { public String[] find(List heroList,String[] dividedPro) { + /** + * 1.初始化字符串数组 + */ String pro = dividedPro[0]; String[] findPro = new String[heroList.size()]; + /** + * 2.把每个找到的英雄对应的属性依次放进数组里 + */ int j = 0; if(pro.equals("-a")) { @@ -25,6 +37,9 @@ public class PropertiesDao j++; } } + /** + * 3.返回这个数组 + */ return findPro; } } diff --git a/src/main/java/utils/DBUtils.java b/src/main/java/utils/DBUtils.java index fe6dd69..01ee329 100644 --- a/src/main/java/utils/DBUtils.java +++ b/src/main/java/utils/DBUtils.java @@ -7,7 +7,11 @@ import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; -//controller层调用 service层, service层在调用dao层;dao层处理完数据返回 service层, service层在返回controller层,controller层最终返回前端。 +/** + * 数据库管理工具类 + * @author markma + * @date 修改时间:2021年8月4日 上午9:18:44 + */ public class DBUtils { public static SqlSession getConnection() @@ -15,15 +19,18 @@ public class DBUtils SqlSession session = null; try { + /** + * 1.加载连接 + */ SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(Resources.getResourceAsReader("utils/config.xml")); - - // 一次会话 - // Connection + /** + * 2.进行一次会话 + * 获得了接口的一个具体实现(实例) + * mybatis 根据注解创建了接口的实例 + */ session = factory.openSession(); - // 获得了接口的一个具体实现(实例) - // mybatis 根据注解创建了接口的实例 } catch (IOException e) diff --git a/src/main/java/utils/NameProDivider.java b/src/main/java/utils/NameProDivider.java index 257701e..1d1a807 100644 --- a/src/main/java/utils/NameProDivider.java +++ b/src/main/java/utils/NameProDivider.java @@ -1,6 +1,6 @@ package utils; /** - * Args分离函数 + * 分离函数 * 将用户输入的带逗号的查询方式分离到数组中去 * 例子:“刘备,曹操”->dividedName[0]="刘备",dividedName[1]="曹操" * 例子:“ID,attackValue”->dividedProperties[0]="ID",dividedName[1]="attackValue" diff --git a/src/main/java/utils/ReturnWriter.java b/src/main/java/utils/ReturnWriter.java index 0436ad3..07fc2e5 100644 --- a/src/main/java/utils/ReturnWriter.java +++ b/src/main/java/utils/ReturnWriter.java @@ -1,16 +1,23 @@ package utils; +import java.io.File; import java.io.FileWriter; import java.io.IOException; - +/** + * 写html工具类 + * 将查询结果写入网页 + * @author markma + * @date 修改时间:2021年8月4日 上午9:20:27 + */ public class ReturnWriter { public void write(String [] out) throws IOException { - FileWriter fileWriterClear = new FileWriter("D:\\eclipse-workspace\\Hero-Select-Online\\src\\main\\webapp\\return.jsp"); + File file = new File("D:\\eclipse-workspace\\Hero-Select-Online\\src\\main\\webapp\\return.jsp"); + FileWriter fileWriterClear = new FileWriter(file); fileWriterClear.close(); - FileWriter fileWriter = new FileWriter("D:\\eclipse-workspace\\Hero-Select-Online\\src\\main\\webapp\\return.jsp",true); + FileWriter fileWriter = new FileWriter(file,true); fileWriter.write("<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>\n" +"\n\n"); for(String s:out) diff --git a/src/main/webapp/return.jsp b/src/main/webapp/return.jsp index 380c902..08b583a 100644 --- a/src/main/webapp/return.jsp +++ b/src/main/webapp/return.jsp @@ -2,6 +2,7 @@

Hero [name=刘备,ID=1]

-

共找到1条结果

+

Hero [name=曹操,ID=2]

+

共找到2条结果