• 图片上传


    图片的保存路径是在运行项目中.即WebContent/attachment

    update.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

    <title>更新用户</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <link href="assets/css/bootstrap.min.css" rel="stylesheet">
    <style type="text/css">
    html,body,#wrapper {
    100%;
    height: 100%;
    }

    .navbar-inverse {
    border-radius: 0;
    margin-bottom: 0;
    }

    .navbar-inverse .navbar-header {
    180px;
    text-align: center;
    border-right: 1px solid rgba(255, 255, 255, 0.4);
    }

    .navbar-inverse .navbar-header .navbar-brand {
    float: none;
    display: inline-block;
    }

    .slider {
    180px;
    min- 180px;
    top: 52px;
    bottom: 0;
    position: absolute;
    background-color: rgba(0, 0, 0, 0.00);
    box-shadow: 3px 0 6px rgba(0, 0, 0, 0.3)
    }

    .slider .nav li a:hover,.slider .nav li.active>a {
    background-color: rgba(0, 0, 0, 0.2) !important;
    }

    .slider .sub-menu li a {
    padding-left: 40px;
    }

    .slider .sub-menu { /* border-bottom:1px solid #e5e5e5; */
    border-top: 1px solid #e5e5e5;
    }

    #wrap {
    margin: 0 0 0 180px;
    }

    #wrap .wrap {
    padding: 5px 10px;
    }

    .panel .panel-footer {
    background-color: #ffffff;
    padding: 0 15px;
    }

    .panel-footer .pagination {
    margin: 5px;
    }
    </style>
    </head>

    <body>
    <div id="wrapper">
    <nav class="navbar navbar-inverse"> <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
    <a class="navbar-brand" href="#">后台系统</a>
    </div>

    <ul class="nav navbar-nav">
    <li class="active"><a href="#">首 页 <span class="sr-only">(current)</span></a></li>
    <li><a href="views/login.jsp">登 录</a></li>
    <li class="dropdown"><a href="#" class="dropdown-toggle"
    data-toggle="dropdown" role="button" aria-haspopup="true"
    aria-expanded="false">更 多 <span class="caret"></span></a>
    <ul class="dropdown-menu">
    <li><a href="#">注 册</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li role="separator" class="divider"></li>
    <li><a href="#">Separated link</a></li>
    <li role="separator" class="divider"></li>
    <li><a href="#">One more separated link</a></li>
    </ul></li>
    </ul>
    <ul class="nav navbar-nav pull-right">
    <li><a href="logout" title="安全退出">安全退出</a></li>
    </ul>
    </nav>
    <div class="slider">
    <ul class="nav">
    <li class="active"><a href="javascript:void(0);"
    onclick="openOrClose(this)"><i class="glyphicon glyphicon-user"></i>
    用户管理 <i class="glyphicon glyphicon-chevron-down pull-right"></i></a>
    <ul class="nav sub-menu">
    <li><a href="users/usersController?_method=findAll"><i
    class="glyphicon glyphicon-list"></i> 用户列表</a></li>
    <li class="active"><a href="#"><i
    class="glyphicon glyphicon-plus"></i> 用户添加</a></li>
    </ul></li>
    <li><a href="javascript:void(0);" onclick="openOrClose(this)"><i
    class="glyphicon glyphicon-th-list"></i> 地址管理 <i
    class="glyphicon glyphicon-chevron-left pull-right"></i></a>
    <ul class="nav sub-menu hidden">
    <li><a href="#"><i class="glyphicon glyphicon-list"></i>
    地址列表</a></li>
    <li><a href="#"><i class="glyphicon glyphicon-plus"></i>
    地址添加</a></li>
    </ul></li>

    </ul>
    </div>

    <div id="wrap">
    <div class="wrap">
    <div class="panel panel-info">
    <div class="panel-heading">修改用户</div>
    <div class="panel-body">
    <form class="form-horizontal" method="post" action="users/usersController?_method=update"
    enctype="multipart/form-data">
    <div class="row">
    <div class="col-lg-8">
    <div class="row">
    <div class="col-lg-6">
    <div class="form-group">
    <label class="col-sm-3 control-label text-right">用户名</label>
    <div class="col-sm-9">
    <input type="text" class="form-control" name="username" placeholder="用户名" value="${users.username }">
    </div>
    </div>
    </div>
    <div class="col-lg-6">
    <div class="form-group">
    <label class="col-sm-3 control-label text-right">密 码</label>
    <div class="col-sm-9">
    <input type="password" class="form-control" name="password" placeholder="密码" value="${users.password }">
    </div>
    </div>
    </div>
    </div>
    <div class="row">
    <div class="col-lg-6">
    <div class="form-group">
    <label class="col-sm-3 control-label text-right">邮 箱</label>
    <div class="col-sm-9">
    <input type="text" class="form-control" name="email" placeholder="邮箱" value="${users.email }">
    </div>
    </div>
    </div>
    <div class="col-lg-6">
    <div class="form-group">
    <label class="col-sm-3 control-label text-right">年 龄</label>
    <div class="col-sm-9">
    <input type="text" class="form-control" name="age" placeholder="年龄" value="${users.age }">
    <input type="hidden" name="id" value="${users.id }">
    </div>
    </div>
    </div>
    </div>
    <div class="row">
    <div class="form-group">
    <div class="col-sm-offset-2">
    <button type="reset" class="btn btn-default">重 置</button>
    <button type="submit" class="btn btn-default">更 新</button>
    </div>
    </div>
    </div>
    </div>
    <div class="col-lg-4">
    <img alt="" src="${users.image }" class="img-thumbnail text-center" height="200px">
    <div class="form-group">
    <label class="col-sm-3 control-label text-right">头 像</label>
    <div class="col-sm-9">
    <input type="file" name="image" class="form-control">
    </div>
    </div>
    </div>
    </div>
    </form>
    </div>
    </div>
    </div>

    </div>
    </body>
    <script type="text/javascript" src="assets/js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
    <script type="text/javascript">
    //打开或是关闭菜单
    function openOrClose(_dom) {
    var sub_menu = getNextSilbing(_dom);
    var flag = _dom.querySelector(".pull-right");
    //如果包含某些样式 则做一些事情
    if (hasClass(sub_menu, "hidden")) {
    //去掉 关于隐藏的class
    removeClass(sub_menu, "hidden");
    //去掉菜单上的向左的箭头
    removeClass(flag, "glyphicon-chevron-left");
    //添加上向下的箭头
    addClass(flag, "glyphicon-chevron-down");
    } else {
    //添加是 隐藏的class
    addClass(sub_menu, "hidden");
    //移除向下的箭头
    removeClass(flag, "glyphicon-chevron-down");
    //添加上向左的箭头
    addClass(flag, "glyphicon-chevron-left");
    }
    //console.log();

    }
    //得到下一个兄弟节点
    function getNextSilbing(_dom) {
    _dom = _dom.nextSibling;
    while (_dom.nodeType != 1) {
    _dom = _dom.nextSibling;
    }
    return _dom;
    }
    //判断是否包含没有个class样式
    function hasClass(_dom, _className) {
    if (_dom.className.indexOf(_className) != -1) {
    return true;
    }
    return false;
    }
    //给指定的元素添加指定的样式
    function addClass(_dom, _className) {
    _dom.className = _dom.className + " " + _className;
    }
    //给指定的元素移除指定的样式
    function removeClass(_dom, _className) {
    _dom.className = _dom.className.replace(_className, "");
    //将每次添加上的多余的空格去掉
    _dom.className = _dom.className.replace(/s+/ig, " ");
    }
    </script>
    </html>

    UsersController.java

    package com.huawei.controller;

    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    import com.cdsxt.common.Page;
    import com.cdsxt.po.Users;
    import com.cdsxt.service.UsersService;

    /**
    * Servlet implementation class UsersController
    */
    public class UsersController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private UsersService usersService = new UsersService();

    /**
    * @see HttpServlet#HttpServlet()
    */
    public UsersController() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    this.doPost(request, response);
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /**
    * 将 当前的doPost方法 当作中专站
    */
    String _method = request.getParameter("_method");

    if("findAll".equalsIgnoreCase(_method)){
    this.findAll(request, response);
    }else if("deleteById".equalsIgnoreCase(_method)){
    this.deleteById(request, response);
    }else if("register".equalsIgnoreCase(_method)){
    this.register(request, response);
    }else if("findById".equalsIgnoreCase(_method)){
    this.findById(request, response);
    }else if("update".equalsIgnoreCase(_method)){
    this.update(request, response);
    }
    }


    private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    Users curr = (Users) request.getSession().getAttribute("admin");



    if(ServletFileUpload.isMultipartContent(request)){
    Map<String, FileItem> map = new HashMap<String, FileItem>();
    //创建工厂
    DiskFileItemFactory factory = new DiskFileItemFactory();
    //得到JVM提供的缓存目录
    ServletContext context = this.getServletContext();
    File repository = (File)context.getAttribute("javax.servlet.context.tempdir");
    factory.setRepository(repository);
    //创建ServletFileUpload
    ServletFileUpload upload = new ServletFileUpload(factory);

    //解析请求
    try {
    List<FileItem> items = upload.parseRequest(request);
    //users = new Users();

    for(FileItem item:items){
    //form表单里面的每一个字段
    map.put(item.getFieldName(), item);
    }


    Users u = new Users();

    u.setId(Integer.parseInt(map.get("id").getString()));
    u.setUsername(map.get("username").getString());
    u.setPassword(map.get("password").getString());
    u.setEmail(map.get("email").getString());
    //u.setImage(Integer.parseInt(map.get("id").getString()));
    u.setAge(Integer.parseInt(map.get("age").getString()));





    //处理 前一步的数据没有顺序的问题
    //for(String key:map.keySet()){
    //FileItem item = map.get(key);

    //if(item.isFormField()){

    //没有顺序

    //}else{
    //得到跟路径
    String path = context.getRealPath("/");
    //得到附件目录
    File attachment = new File(path,"attachment/"+map.get("username").getString());
    //如果没有 就创建目录
    System.out.println(attachment.getAbsolutePath());
    System.out.println(attachment.exists());
    if(!attachment.exists()){
    attachment.mkdirs();
    }

    FileItem image = map.get("image");

    File output = new File(attachment,System.currentTimeMillis()+"."+getSuffix(image.getName()));

    image.write(output);
    u.setImage("attachment/"+map.get("username").getString()+"/"+output.getName());
    //System.currentTimeMillis()
    this.usersService.update(u);
    this.findAll(request, response);
    //}
    //}
    //map.get("id");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }


    }

    private String getSuffix(String name){
    if(name!=null){
    String[] suffixs = name.split("\.");
    if(suffixs.length>1){
    return suffixs[suffixs.length-1];
    }
    }
    return "";
    }

    private void findById(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    String id = request.getParameter("id");
    if(id!=null && id.trim()!=""){
    Users users = this.usersService.findById(Integer.parseInt(id));
    request.setAttribute("users", users);
    request.getRequestDispatcher("/views/update.jsp").forward(request, response);
    return ;
    }
    }

    private void register(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    Users users = null;
    //判断是否有文件上传
    if(ServletFileUpload.isMultipartContent(request)){
    //创建工厂
    DiskFileItemFactory factory = new DiskFileItemFactory();
    //得到JVM提供的缓存目录
    ServletContext context = this.getServletContext();
    File repository = (File)context.getAttribute("javax.servlet.context.tempdir");
    factory.setRepository(repository);
    //创建ServletFileUpload
    ServletFileUpload upload = new ServletFileUpload(factory);

    //解析请求
    try {
    List<FileItem> items = upload.parseRequest(request);
    users = new Users();

    for(FileItem item:items){
    //form表单里面的每一个字段

    }
    //得到跟路径
    String path = context.getRealPath("/");
    //得到附件目录
    File attachment = new File(path,"attachment");
    //如果没有 就创建目录
    if(!attachment.exists()){
    attachment.mkdirs();
    }


    } catch (FileUploadException e) {
    e.printStackTrace();
    }
    }

    }

    protected void deleteById(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String id = request.getParameter("id");
    this.usersService.deleteById(Integer.parseInt(id));
    response.sendRedirect("usersController?_method=findAll");

    }

    protected void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //List<Users> users = this.usersService.findAll();
    //request.setAttribute("users", users);

    String keyword = request.getParameter("keyword");

    if(keyword==null){
    keyword = "";
    }

    Page page = new Page();
    String curr = request.getParameter("curr");
    if(curr ==null || curr.trim().equals("")){
    curr ="1";
    }
    page.getKeywords().put("username", keyword);
    page.setCurr(Integer.parseInt(curr));
    page = this.usersService.find4Page(page);
    request.setAttribute("page", page);
    request.getRequestDispatcher("/views/index.jsp").forward(request, response);
    return;
    }

    }

  • 相关阅读:
    抓包工具之Charles
    docker之服务搭建
    Linux之查看开放端口
    Centos7下的开机自启动
    phpredis和predis
    Redis迁移工具之Redis-shake
    服务器间文件实时双向同步(rsync+inotify)
    Linux之轨迹记录(script)
    Redis集群之常用操作
    Redis集群搭建-多服务器
  • 原文地址:https://www.cnblogs.com/hwgok/p/5873935.html
Copyright © 2020-2023  润新知