javaweb_3_MVC设计模式

2020-05-29  本文已影响0人  老北瓜

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响应给客户端。

模拟登录注册功能

注册时上传头像,表单上传文件的条件

 <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默认关掉浏览器就没有啦,所以我们要设置一个有效时间

上一篇下一篇

猜你喜欢

热点阅读