1、各个包在框架下的理解:
User作用:
//存放用户实体。提供属性,get/set方法
UserDao
//实现对文件数据的操作。是service的底层
//发送反馈给service
service
//提供可实现的功能
//service不具体实现,调度UserDao。接收UserDao实现的反馈。
//发送反馈给servlet
servlet
//调度。
//接收service功能的反馈。
//完成相关信息、异常消息的存放。返回给jsp用以显示
2、注册流程:
用户提交表单 jsp
如果异常,使用EL表达式输出异常信息。
传递验证码图片
servlet封装表单,传递(调用)给service#regist servlet
封装:toBean ***导包。
service.regist()
接收service结果。
service#regist。用于接收注结果。根据注册功能对应的文件操作。转发给userdao完成。自身用于接收反馈信息。
先调用userdao#findByName中查询
返回null正常:调用userdao#add添加
添加完成。跳转登陆界面。
返回异常:获取异常信息,保存到request域。转发回注册界面
userdao查询与添加。是否存在。存在则不添加。不存在则添加 完成后反馈给上层。
知识点,dom4j对xpath的操作。 ***需要导包jaxen-1.1-beta-6.jar
findByName
得到doc
使用xpath查找
没找到:返回null
找到了,返回注册异常。
add
得到doc
得到根节点
创建新元素
设值。
回写。
user数据的底层设置和获取方法。
底层文件:xml
xml格式:每个用户一个<user>属性为username和password
3、练习感想:
//xml文件配置
考虑根元素
考虑属性
//表单提交
考虑提交地址:项目名 + web.xml中对应的Url-pattern属性值
提交方式:EL表达式、JSTL-core库标签
EL表达式:${pageContext.request.contextPath}/RegistServlet
JSTL-core库标签:<c:url value='/RegistServlet'/>
//创建方法时:
考虑是否需要返回值,返回值类型
考虑参数
//requst应用理解:
多用于servlet与jsp页面的数据请求共享
eg:1)保存错误信息到request中,(设置属性及信息)可以在jsp界面用EL表达式输出。
EL表达式的优势:有值回输出,无值不输出
2)用于用户名回显。
//EL表达式应用理解:
在jsp页面中输出域中内容,输出集合中内容。
//session感想
保存一次对话的信息
可用于数据回显等操作。
//xpath感想
用于查找xml文件节点。极其方便。
//输入验证时 考虑输入为空情况
//jsp插入图片:
需设置src !
设置id
//jsp调用JavaScript代码
jsp页面需要动态效果时,需编写JavaScript代码用数据呈现动态效果。 eg:图片切换。
//超链接调用JavaScript代码
点击元素时启动 JavaScript。
<a href="javascript:_change()">
遗留问题:
异常处理的交互流程。
封装表单数据的过程。
代码:
####package Domain
//实体类
//存放用户实体。提供属性,get/set方法
public class User {
private String username;
private String password;
private String verifyCode;
public String getVerifyCode() {
return verifyCode;
}
public void setVerifyCode(String verifyCode) {
this.verifyCode = verifyCode;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password, String verifyCode) {
super();
this.username = username;
this.password = password;
this.verifyCode = verifyCode;
}
}
####package Dao
//实现对文件数据的操作。是service的底层
//发送反馈给servic