簡體   English   中英

Java Servlet和JSP,如何從文件獲取完整路徑名?

[英]Java Servlet and JSP, How to get full path name from a file?

當我使用request.getParameter(“ txtPhoto”); 它返回文件名(image.jpg),但我想獲取完整路徑名(C:\\ Images \\ image.jpg),因為我需要完整的位置才能將文件保存在MySQL數據庫中。 我希望你能幫助我。

----------------------- JSP頁面

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Upload</title>
    </head>
        <body>
            <form action="ImageController" method="post">
                <h1>File</h1>
                <input type="file" name="txtPhoto" placeholder="Upload Your Image" accept="image/gif, image/jpeg, image/png" /><br /><br />
                <input type="submit" value="Save">
            </form>
        </body>
</html>

----------------- Servlet

@WebServlet(name = "ImageController", urlPatterns = {"/ImageController"})
public class imagenservlet extends HttpServlet

{
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {            
        if(request.getParameter("txtPhoto") == null)
        {
            response.sendRedirect("upload.jsp");
            return;
        }
        PrintWriter out = response.getWriter();

        FileInputStream input = null;
        File theFile = new File(request.getParameter("txtPhoto"));
        input = new FileInputStream(theFile);
        out.println("FullPathname" + " " + theFile.getAbsolutePath());

    }
}

您無法獲取本地文件路徑,因為它在服務器端無用。 它僅對黑客有用。 這就是為什么瀏覽器不發送它。

在JSP端聲明隱藏的filePath可變的,將所需的路徑分配給該隱藏的變量,並在servlet中獲取該變量,這可以解決。

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>APMC Junagadh</title> <!-- Bootstrap Core CSS --> <link href="<c:url value='/resources/css/bootstrap.min.css' />" rel="stylesheet" /> <!-- MetisMenu CSS --> <link href="<c:url value='/resources/css/metisMenu.min.css' />" rel="stylesheet" /> <!-- Custom CSS --> <link href="<c:url value='/resources/css/sb-admin-2.css' />" rel="stylesheet" /> <!-- Custom Fonts --> <link href="<c:url value='/resources/css/font-awesome.min.css' />" rel="stylesheet" /> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <c:choose> <c:when test="${empty editDistrict}"> <c:set var="action" value="${pageContext.request.contextPath}/Admin/admin/district_add" /> <c:set var="caption" value="Save" /> </c:when> <c:otherwise> <c:set var="action" value="${pageContext.request.contextPath}/Admin/admin/district_update" /> <c:set var="caption" value="Update" /> </c:otherwise> </c:choose> <div align="right"> <a href="<c:url value="/j_spring_security_logout" />" >Logout</a> </div> <div class="container"> <div class="row"> <div class="col-md-4 col-md-offset-4"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">District Name</h3> </div> <c:if test="${!empty successMsg}"> <div class="alert alert-success"> ${successMsg} </div> </c:if> <c:if test="${!empty errorMsg}"> <div class="alert alert-danger"> ${errorMsg} </div> </c:if> <form:form id="registerDistrictForm" modelAttribute="district" method="post" action="${action}"> <div class="panel-body"> <fieldset> <div class="form-group"> <label></label> </div> <div class="form-group"> <form:errors path="dst_state_id.state_id" cssClass="control-label" for="inputError" /> <form:select path="dst_state_id.state_id" size="1" class="form-control"> <option value="null">Select State Name</option> <c:forEach var="theState" items="${listOfstate}"> <c:choose> <c:when test="${theState.state_id == editDistrict.getDst_state_id().getState_id()}"> <c:set var="selected" value="selected"/> </c:when> <c:otherwise> <c:set var="selected" value=""/> </c:otherwise> </c:choose> <form:option value="${theState.state_id}" selected="${selected}"> <c:out value="${theState.state_name}" /> </form:option> </c:forEach> </form:select> </div> <div class="form-group"> <form:errors path="dst_name" cssClass="control-label" for="inputError" /> <form:input class="form-control" placeholder="District Name" path="dst_name" value="${editDistrict.dst_name}" autofocus="true" /> </div> <!-- Change this to a button or input when using this as a form --> </fieldset> </div> <div class="panel-footer"> <input type="hidden" name="dst_id" value = "${editDistrict.getDst_id()}" /> <input type="submit" value="${caption}" class="btn btn-lg btn-success btn-block" /> </div> </form:form> </div> </div> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12"> <div class="panel panel-primary"> <div class="panel-heading"> District List </div> <!-- /.panel-heading --> <div class="panel-body"> <div class="dataTable_wrapper"> <c:if test="${!empty showDistrictList}"> <table class="table table-striped table-bordered table-hover" id="dataTables-example"> <thead> <tr> <th> Sr. No. </th> <th> State Name </th> <th> District Name </th> <th>Edit</th> </tr> </thead> <tbody> <c:set var="i" value="0" /> <c:forEach items="${showDistrictList}" var="dst"> <c:set var="i" value="${i+1}" /> <tr class="odd"> <td><c:out value="${i}" /></td> <td><c:out value="${dst.getDst_state_id().getState_name()}" /> </td> <td><c:out value="${dst.dst_name}" /> </td> <td><form action="${pageContext.request.contextPath}/Admin/admin/district_edit" method="post"> <input type="hidden" name ="dst_id" value="${dst.dst_id}" /> <input type="submit" value="" class="fa fa-pencil" /> </form> </td> </tr> </c:forEach> </tbody> </table> </c:if> </div> <!-- /.table-responsive --> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> </div> <!-- jQuery --> <script src="<c:url value="/resources/js/jquery.min.js" />"></script> <!-- Bootstrap Core JavaScript --> <script src="<c:url value="/resources/js/bootstrap.min.js" />"></script> <!-- Metis Menu Plugin JavaScript --> <script src="<c:url value="/resources/js/metisMenu.min.js" />"></script> <!-- DataTables JavaScript --> <script src="<c:url value="/resources/js/jquery.dataTables.min.js" />"></script> <script src="<c:url value="/resources/js/dataTables.bootstrap.min.js" />"></script> <!-- Custom Theme JavaScript --> <script src="<c:url value="/resources/js/sb-admin-2.js" />"></script> <!-- Page-Level Demo Scripts - Tables - Use for reference --> <script> $(document).ready(function() { $('#dataTables-example').DataTable({ responsive: true }); }); </script> </body> </html> 

在上面的文件district.jsp中

 <c:set var="action" value="${pageContext.request.contextPath}/Admin/admin/district_add" /> 

我曾經用來提供絕對路徑的標簽

 <form:form action="${action}"> 

就像我給你的那個控制器的例子

 package com.apmc.controller; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.validation.Valid; import org.apache.log4j.Logger; import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.apmc.Generic.RandomGenerator; import com.apmc.domain.District; import com.apmc.domain.State; import com.apmc.services.DistrictService; import com.apmc.services.StateService; @Controller public class DistrictController { private static Logger logger = Logger.getLogger(DistrictController.class); DateFormat df = new SimpleDateFormat("ddMMyyHHmmss"); Date dateobj = new Date(); int randNum = RandomGenerator.randInt(1000, 9999); String errorcode = null; String errorMsg = ""; String successMsg = ""; District editDistrict = null; List<District> newList = new ArrayList(); List<State> listOfstate = new ArrayList<State>(); @Autowired DistrictService districtService; @Autowired StateService stateService; @InitBinder public void initBinder(WebDataBinder binder){ binder.registerCustomEditor( Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true, 10)); } @RequestMapping(value = "/Admin/admin/NewDistrict_form") public ModelAndView districtForm(@ModelAttribute District district) { try { logger.info("\\n districtForm Started"); listOfstate = stateService.loadAll(); newList = districtService.loadAll(); logger.info("\\n districtForm Completed"); errorMsg = ""; } catch (Exception e) { errorcode = ""+df.format(dateobj)+randNum; errorMsg = " New District Form Error \\n Please contact Admin and errorcode: "+errorcode; successMsg = ""; logger.error("error code for districtForm in DistrictController "+df.format(dateobj)+" errorcode: "+errorcode); } return new ModelAndView("district").addObject("editDistrict", null).addObject("errorMsg", errorMsg) .addObject("showDistrictList", newList).addObject("successMsg", successMsg).addObject("listOfstate",listOfstate); } @RequestMapping(value={"/Admin/admin/district_add", "/Admin/admin/district_update"}, method=RequestMethod.POST) public ModelAndView saveOrUpdateDistrict( @Valid District district, BindingResult result) { if (result.hasErrors()) { successMsg = ""; errorMsg = "Data is remaining or wrong."; if(district.getDst_id() != null) editDistrict = district; else editDistrict = null; try{ listOfstate = stateService.loadAll(); newList = districtService.loadAll(); } catch (Exception e) { logger.error(e.getMessage()); errorcode = ""+df.format(dateobj)+randNum; successMsg = ""; errorMsg = " District Form Save or Update Error \\n Please contact Admin and errorcode: "+errorcode; logger.error("error code for saveOrUpdateDistrict in DistrictController "+df.format(dateobj)+" errorcode: "+errorcode); } return new ModelAndView("district").addObject("editDistrict", editDistrict).addObject("errorMsg", errorMsg) .addObject("showDistrictList", newList).addObject("successMsg", successMsg).addObject("listOfstate",listOfstate); } else { try { logger.info("\\n saveOrUpdateDistrict Started \\n errorcode : "+errorcode); districtService.saveOrUpdate(district); successMsg = "Saved Successfully"; errorMsg = ""; logger.info("\\n saveOrUpdateDistrict Completed"); } catch(ConstraintViolationException e){ logger.error(e.getMessage()); successMsg = ""; errorMsg = "Duplicate District Name inserted"; } catch(Exception e){ logger.error(e.getMessage()); errorcode = ""+df.format(dateobj)+randNum; successMsg = ""; errorMsg = " District Form Save or Update Error \\n Please contact Admin and errorcode: "+errorcode; logger.error("error code for saveOrUpdateDistrict in DistrictController "+df.format(dateobj)+" errorcode: "+errorcode); } try{ listOfstate = stateService.loadAll(); newList = districtService.loadAll(); } catch (Exception e) { logger.error(e.getMessage()); errorcode = ""+df.format(dateobj)+randNum; successMsg = ""; errorMsg = " District Form Save or Update Error \\n Please contact Admin and errorcode: "+errorcode; logger.error("error code for saveOrUpdateDistrict in DistrictController "+df.format(dateobj)+" errorcode: "+errorcode); } if(errorMsg == "") return new ModelAndView("redirect:/Admin/admin/NewDistrict_form"); else return new ModelAndView("district").addObject("editDistrict", null).addObject("errorMsg", errorMsg) .addObject("showDistrictList", newList).addObject("successMsg", successMsg).addObject("listOfstate",listOfstate); } } @RequestMapping(value = "/Admin/admin/district_edit", method=RequestMethod.POST) public ModelAndView editDistrict(@RequestParam Long dst_id, @ModelAttribute District district) { errorMsg = ""; successMsg = ""; District editDistrict = new District(); try { logger.info("\\n editDistrict Started \\n errorcode : "+errorcode); editDistrict = districtService.get(dst_id); newList = districtService.loadAll(); logger.info("\\n editDistrict Completed"); } catch (Exception e){ logger.error(e.getMessage()); errorcode = ""+df.format(dateobj)+randNum; errorMsg = " District Form Edit Error \\n Please contact Admin and errorcode: "+errorcode; logger.error("error code for editDistrict in DistrictController "+df.format(dateobj)+" errorcode: "+errorcode); } System.out.println("\\n\\n\\n\\n error msg "+errorMsg); return new ModelAndView("district").addObject("editDistrict", editDistrict).addObject("showDistrictList", newList) .addObject("errorMsg", errorMsg).addObject("listOfstate",listOfstate); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM