该部分代码以完成,欢迎参考
【知识点1】
通过Properties类获取数据信息。
InputStream is=当前类.class.getClassLoader.getResourceAsStream("Properties文件位置")
Properties properties=new Properties();
properties.load(is);
properties.getProperty("Properties文件的key值");
【知识点二】
RequestDispatcher rd=request.getRequestDispatcher();
该对象的forward(request,response)和include(request,response)的区别?
这两个方法都是用来跳转资源的,但是forward方法执行完,该Servlet后面的response输出不会被执行,如果跳转的是另一个Servlet,另一个Servlet里也有response输出,则这个输出会执行,这里的不会执行只是执行forward方法的Servlet后面的response输出不会执行。如果换成include方法,则这两个Servlet里response输出都会被执行。如果在跳转的Servlet里把response.getWriter获得的对象close掉,则原来的Servlet也不会进行输出。
servlet A
RequestDispatcher disp = request.getRequestDispatcher("B");
disp.forward(request, response);
System.out.println("servlet A completed");
PrintWriter pw = response.getWriter();
pw.println("servlet A");
servlet B
PrintWriter pw = response.getWriter();
pw.println("servlet B");
输出结果:
控制台:servlet A completed
页面:servlet B
如果将forward换成include的话,则结果为:
控制台:servlet A completed
页面:servlet B servlet A
PS:如果在servlet B里把pw给close掉了的话,那servlet A 这里就无法输出了,则结果就和第一个一样。
【知识点三】
JSTL和EL
JSTL——
for循环标签:<c:forEach items="" var="" varStatus="">
items:值为传过来的集合,可以通过EL表达式或者JSP表达式获取(${list}或者<%=request.get...%>)
var:代表集合中的每一项的名称,如果集合中是基本类型,则可以通过${变量名}取值,如果是自定义的类,则可以通过${变量名.属性名}。
varStatus:相当于一个变量,它的初始值是0,获取它的值方式,名称.index,通常用它和<if>标签实现隔行变色功能。
if条件标签:<if test="表达式"></if>它可以嵌在标签里面。
EL——通过${}获取传到页面的值。

案例分析
基本功能:接收发送指令
根据指令自动回复对应的内容
模块划分:
回复内容的维护——包括新增、修改等(维护的是发送的指令与回复内容的关系,也就是一种指令只能对应一段内容)
对话功能——用户与公众号对话的平台,根据指令匹配回复内容
回复内容列表——把维护到数据库的内容展示出来,具备搜索所有内容,还能进行二次维护(也可以从这里进行删除)
回复内容删除——
案例分析:
案例分析 基本功能 接收发送指令 根据指令自动回复对应的内容 模块划分 回复内容列表--->回复维护内容-->对话功能---->回复内容删除