MVC设计模式
Jsp(处理用户请求) + JavaBean(数据封装和处理) 简单web程序
Servlet(处理用户请求) + Jsp(数据显示) + JavaBean(数据封装) 复杂web程序
Servlet缺陷
1, 需要配置
2,显示html元素的时候很复杂 --- > Jsp
JSP缺陷
封装和处理数据麻烦 ---- >javaBean
Jsp + JavaBean :
因为Jsp中的代码很难复用,可以在 Bean 中定义方法,然后在Jsp中调用bean方法。
优点:
1,jsp显示数据
2,Javabean封装和处理数据
Servlet + JSP + Javabean
M: Model模型层 -- javaBean
V: View视图层 -- JSP
C: Controller控制层 -- Servlet
由C统一调度JavaBean (M) 分装和助力数据,由JSP(V)进行数据的显示。
Mvc工作流程:
客户端发送请求, 由Servlet接收,Servlet调用javabeans来分别处理封装数据,JavaBean将数据的处理的结果 通过Jsp响应给客户端。
模拟登录注册功能
注册时上传头像,表单上传文件的条件
- 表单必须是post提交方式
- 表单中必须有文件上传项,文件上传项必须有name属性和值
- 表单的 enctype属性必须设置为 multipart/form-data
<form action="/reg_login/RegistServlet" method="post" enctype="multipart/form-data">
<table>
<tr>
<td class="td1">上传头像</td>
<td><input type="file" id="photo" name="upload"></td>
</tr>
</table>
</form>
因为 enctype的属性已经变了,所以就不可以再使用传统的request.getParmter("")来获取到参数值了,需要引入第三方组件来接收参数。
数据接收 - 文件上传的基本流程
引入jar包 fileupload.jar
try {
// 创建一个磁盘文件项工厂文件
DiskFileItemFactory factory = new DiskFileItemFactory();
// 创建一个核心解析类
ServletFileUpload upload = new ServletFileUpload(factory);
// 解析Request 请求,返回的是一个 FileItem 类型的集合
List<FileItem> list = upload.parseRequest(request);
//遍历集合,判断属于普通表单项还是文件上传项
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
// 获取表单项 name属性
String name = fileItem.getFieldName();
// 解决中文乱码问题, value值
String value = fileItem.getString("UTF-8");
System.out.println(name + " " + value);
} else {
}
} catch (FileUploadException e) {
e.printStackTrace();
}
获取 checkbox的值, 因为 表单种 一个 checkbox可以对应多个名字,所以 hobby对应多个value.
List<String> hobbyValues = new ArrayList<String>();
if ("hobby".equals(name)) {
String hobbyValue = fileItem.getString("UTF-8");
hobbyValues.add(hobbyValue);
}
文件上传问题
解决文件名重复问题, 使用UUID.random(fileName);
Cookie
用来存储用户登录信息。cookie默认关掉浏览器就没有啦,所以我们要设置一个有效时间
网友评论