为了重用我的请求,我需要实现HttpRequestWrapper和Filter。这是因为我首先需要请求查看用户选择了什么,然后将文件上传到tomcat服务器。现在我有一个Servlet上传文件"公共类UploadFile扩展HttpServlet{}",它为每个用户运行。一旦它返回用户选择的内容,它就会变为null,我无法将文件上传到服务器。只是想知道为了实现HttpRequestWrapper,我是否必须对代码进行大量修改?我是否从"公共类UploadFile扩展HttpServlet{}"更改为"公共类上传文件扩展HttpRequestWrapper{}"?
So firstly I check the parameters to see which checkbox has been ticked :
String ConvertFile = request.getParameter("ConvertFile");
String Powershell = request.getParameter("Powershell");
String LMBackup = request.getParameter("LM_Backup");
String Restful_API = request.getParameter("Restful_API");
if (Powershell != null) {
Powershell = request.getParameter("Powershell");
}
if (LMBackup != null) {
LMBackup = request.getParameter("LM_Backup");
}
if (Restful_API != null) {
Restful_API = request.getParameter("Restful_API");
}
if (ConvertFile != null && LMBackup == null && Powershell != null && Restful_API == null)
{
System.out.println(ConvertFile + " and " + Powershell + " selected");
doUpload(request, response); //Here the request that is being passed is now null because I've used it previously
response.sendRedirect("index.jsp");
}
//上传方法如图所示//由于请求已被使用,项目保持为空
protected void doUpload(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
System.out.println("Uploading File");
boolean ismultipart = ServletFileUpload.isMultipartContent(request);
System.out.println(request + " <<<<<<<<<<<<<+++++++++++++");
if (ismultipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
System.out.println(items + "<<<<<<<<<--------------");
} catch (Exception e) {
System.out.println(e);
}