`
wang55www
  • 浏览: 29227 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

我遇到的问题JspSmartUpload组件实现表单和文件同时上传

阅读更多
这个问题,困扰我几天。之前一直以为应该很好解决,但直到真正解决起来才知道他的难度,而解决后又觉得其实不是很难。看来自己当初多么的无知。

现在说明一下结局方法。

要提交的jsp页面addmodel.jsp:

<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="com.mobile.service.convert" %>
<%
request.setCharacterEncoding("gb2312");
%>
<html>
<jsp:useBean id="db" scope="page" class="com.mobile.conn.mysql"/>
<head>
<title>add model</title>
<link rel="stylesheet" type="text/css" href="../css/style1.css"/>
<script type="text/javascript" src="../js/calendar.js"></script>
<script language="javascript">

var CalendarWebControl = new atCalendarControl();

function changepic(){
var fileName=document.all.file.value;
if(fileName=="")
document.all.pic.src="../img/product/nopic.jpg";
var exName=fileName.substring(fileName.lastIndexOf(".")+1).toUpperCase()
if(exName=="JPG"||exName=="GIF")
document.all.pic.src=document.all.file.value;
else{
alert("清选择图片格式为gif,jpg");
document.all.pic.src="../img/product/nopic.jpg";
}
}
</script>
</head>
<body>
<form name="form1" action="../domodel" method="POST" ENCTYPE="multipart/form-data">
<input type="hidden" name="kind" value="1">
<div align="center">
<center>
<table border="0" width="519" cellspacing="0" cellpadding="0" height="243">
<tr>
<td width="517" height="38" align="center" bgcolor="#FFFFFF" valign="top"><font size="5" color="#FFCC66">添加手机</font>
</td>
</tr>
<tr>
<td width="517" height="253">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="174">
<tr>
<td width="34%" height="41" align="right">*手机型号:</td>
<td width="136%" height="41" align="left" valign="middle"><input type="text" name="modelname" size="20" class="txt">
</tr>
<tr>
<td width="34%" height="44" align="right">*所属品牌:</td>
<%
String sql="select * from label order by idno desc";
ResultSet rs=db.executeQuery(sql);
%>
<td width="136%" height="44" align="left"><select size="1" name="labidno">
<%while(rs.next()){%>
<option value="<%=rs.getInt("idno")%>"><%=convert.getInstance().iso2gb(rs.getString("cname")) %></option>
<%} %>
</select></td>
</tr>
<tr>
<td width="34%" height="43" align="right">手机类型:</td>
<td width="136%" height="43" align="left"><select size="1" name="modelkind">
<option selected value="直板">直板</option>
<option value="翻盖">翻盖</option>
<option value="滑盖">滑盖</option>
<option value="其它">其它</option>
</select></td>
</tr>
<tr>
<td width="34%" height="43" align="right">手机图片:</td>
<td width="136%" height="43" align="left"><input name="file" type="file" onChange="changepic()" class="txt"><br>
<img src="../img/product/nopic.jpg" name="pic" width="100" height="200"></td>
</tr>
<tr>
<td width="34%" height="43" align="right">*发布时间:</td>
<td width="136%" height="43" align="left"><input type="text" name="pubtime" size="20" class="txt" readonly="true">
<img src="../img/btn_select_date_1.gif" width="18" height="18" onClick="CalendarWebControl.show(document.form1.pubtime,'',this)"></td>
</tr>
</table>
</td>
</tr>
<TR>
<td align="center">
<input type="submit" value="提交" class="btt"><input type="reset" value="重填" class="btt">
</td>
</tr>
</table>
</center>

</div>
</form>
</body>
</html>

有点长看看我用颜色标记的地方就行。

下面是重点看看接收数据的servlet domodel.java

package com.mobile.service;

import javax.servlet.http.*;
import javax.servlet.jsp.*;

import java.io.*;

import javax.servlet.*;

import java.sql.*;
import com.mobile.conn.*;

import java.util.*;

import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.File;

public class domodel extends HttpServlet {
private mysql mysql=new mysql();
public String modelname;
public String modelimg;
public String modelkind;
private ServletConfig config;

final public void init(ServletConfig config) throws ServletException {
this.config = config;
}

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
PrintWriter out=response.getWriter();
SmartUpload smtup=new SmartUpload();
smtup.initialize(config,request,response);//初始化
try{
smtup.upload();
int kind=Integer.parseInt((smtup.getRequest()).getParameter("kind"));//这个就是接收了表单的kind数据
switch(kind){
case 1:

}
}
catch(Exception e){
out.print(e.toString());
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}

终结一下要点:1.表单的页面要将表单的属性即<form ENCTYPE="multipart/form-data">如上设置。表示表单上传的是多媒体数据

2.servlet的初始化实现config类。用做实现jspsmartupload类初始化的参数。用pagecontext也行。

3.实现JspSmartUpload类后要马上执行upload方法表示将表单所有数据接收过来

4.在第3步执行后使用(smtup.getRequest()).getParameter("kind")接受直接使用request对象不好用只能先使用getRequest()方法在进行接收

最后,感谢网上提供参考资料的作者们!http://www.webjx.com/htmldata/2005-08-19/1124406463.html非常感谢以上连接文章的作者,给我很大帮助!

分享到:
评论

相关推荐

    java使用smartupload组件实现文件上传的方法.doc

    相比之下,smartupload组件能够极大简化文件上传的代码,让开发者可以更加专注于业务逻辑的实现,而不必过分担心底层的文件处理问题。smartupload组件支持通过设置不同的属性,如上传文件大小限制、临时文件目录等,...

    jspSmartUpload上传下载

    JSP SmartUpload是一个常用的Java库,专门用于处理文件上传任务,它简化了在JSP中实现文件上传的复杂性。本文将深入探讨JSP SmartUpload的工作原理、使用方法及其在实际项目中的应用。 1. **JSP SmartUpload简介** ...

    jspSmartUpload使用详解

    `jspSmartUpload` 是一个基于Java的开源上传组件,它为JSP开发人员提供了一种简单易用的方式来处理文件上传功能。这个组件在早期的Web应用程序中尤其常见,因为其强大的功能和对多种浏览器的良好兼容性。在本文中,...

    [JSP应用]使用jsp上传组件jspsmartupload时如何获取FORM中其它的值.doc

    然而,在实际操作中,可能会遇到一个问题:当表单(`FORM`)中包含文件上传字段时,无法通过`request.getParameter`正常获取表单中的其他非文件数据。这是因为文件上传需要`enctype`属性设置为`multipart/form-data`...

    上传文件使用的jar包jspsmartupload.jar

    "jspsmartupload.jar"是一个专为Java Web应用设计的文件上传组件,它允许开发者轻松实现文件上传功能。这个jar包简化了处理用户通过表单上传文件的复杂性,提供了一个高效、安全且易于使用的解决方案。 首先,我们...

    jspSmartUpload使用详解(上传下载组件)

    总的来说,jspSmartUpload组件提供了一套完整的文件上传和下载解决方案,通过简单的API调用,开发者可以在JSP应用中轻松集成文件管理功能。其灵活性和易用性使得它成为Java Web开发中的一个实用工具。

    jspSmartUpload中文版

    `jspSmartUpload` 是一个专门针对JavaServer Pages(JSP)开发的文件上传组件,它在处理用户通过Web表单上传文件时提供了强大的支持。在这个特定的"jspSmartUpload中文版"中,主要关注的是对中文文件名的支持和乱码...

    jspsmartupload.rar

    这个压缩文件的核心是 "jspsmartupload.jar",它是一个Java类库,专为处理在JSP环境中进行文件上传时可能出现的编码问题而设计。 在传统的文件上传过程中,如果服务器端不正确处理字符编码,中文文件名或内容在上传...

    jspSmartupload已解决中文问题

    `jspSmartupload` 是一个基于Java的文件上传组件,它为JSP和Servlet应用程序提供了方便的文件上传功能。在处理中文文件名时,通常会遇到编码问题,导致文件名显示乱码或者上传失败。`jspSmartupload` 已经解决了这个...

    jspSmartUpload下载

    `jspSmartUpload` 是一个基于Java的Web上传组件,它为开发者提供了在JSP应用程序中实现文件上传功能的便捷方式。这个组件最初由Kenshin Li开发,它简化了处理用户上传文件的过程,包括多文件上传、文件大小限制、...

    JSP SmartUpload上传文件乱码解决纪实+UploadBean上传解决方案.mht

    在JSP开发中,文件上传是一项常见的功能,而SmartUpload和UploadBean是两种常用的文件上传组件。本篇文章将深入探讨这两个组件以及如何解决文件上传时出现的中文乱码问题。 首先,SmartUpload是一个强大的文件上传...

    JspSmartUpload自定义编码终版

    总的来说,"JspSmartUpload自定义编码终版"是针对中文乱码问题的一个重要解决方案,它增强了JspSmartUpload组件在处理中文字符集时的兼容性和稳定性。通过理解其工作原理,开发者可以更好地应对各种编码挑战,提升...

    JSP使用组件jspSmartUpload+JavaMail+jaf+iText+jFreechart

    例如,用户上传的文件可以通过jspSmartUpload组件处理,然后利用JavaMail发送邮件附带文件;同时,可以用iText将报表数据转化为PDF格式,而jFreechart则可以生成报表的可视化图表。所有这些组件都是开源的,有着活跃...

    jspSmartUpload 和详细使用文档

    `jspSmartUpload组件上传下载详解.docx`文件应该包含了更详细的使用指南、示例代码和常见问题解答。建议开发者仔细阅读这份文档,了解如何设置上传限制、处理上传错误、自定义上传后的行为等高级特性。 ### 4. 注意...

    jspsmartupload上传下载

    JSpsmartupload是一款基于Java的文件上传和下载组件,它为JSP应用提供了简单易用的接口来处理文件上传操作。在本篇中,我们将深入探讨JSpsmartupload的工作原理、实现方式以及如何自定义`Request`以满足特定需求。 ...

    用jspsmartupload在jsp页面上传下载

    总结,jspsmartupload是Java Web开发中一个实用的文件上传和下载工具,通过其API和源码,开发者可以轻松地在JSP页面中实现文件操作功能。不过,随着技术的发展,现在更多的项目转向了Spring MVC或其他现代框架,它们...

    jspsmartupload支持中文名

    1. **多文件上传**:JSpsmartupload支持一次性上传多个文件,用户可以在同一表单中选择多个文件进行上传,提高了用户体验。 2. **中文文件名支持**:由于其内部对字符编码进行了优化,因此能够正确处理包含中文字符...

    jspsmartupload,smartupload UTF8 版,解决乱码问题

    "jspsmartupload"和"smartupload UTF8版"是针对Java Web应用的文件上传组件,旨在简化文件上传操作,并解决多语言环境下的字符编码问题,特别是中文乱码问题。在这个场景下,我们主要关注两个核心知识点:...

    jspupload.zip_jspSmartUpload

    **JSP Smart Upload 知识点详解...总的来说,"jspupload.zip_jspSmartUpload"提供了JSP Smart Upload组件,帮助开发者在JSP环境中实现安全、高效的文件上传功能。通过合理配置和使用,可以大大简化文件上传的开发流程。

    JspSmartUpload源码.rar

    7. **安全性**:尽管JspSmartUpload简化了文件上传,但开发者仍需要注意安全问题,比如防止恶意文件上传、跨站脚本攻击(XSS)和路径遍历漏洞。这个修改版可能已经增强了安全性,但仍建议结合其他安全措施使用。 8. *...

Global site tag (gtag.js) - Google Analytics