(如何用jsp编写网页)(jsp怎么做)

前文

最开始是为了解决图片保存到MySQL数据库的问题,之前没做过,后来自己查资料。找到两种有效的方式。

第一种是直接把图片转化成字节流存进数据库,这样的例子很多,好处很明显,存进去以后,可以直接备份数据库带走,简单方面,坏处就是图片占用内存,一旦数量上来,那么对内存库的压力很大,在高并发访问的情况下,占用资源较大,所以一般情况下,很多公司都不是采用这样的方式。而是采用第二种,把图片上传到服务器的文件夹内,然后数据库直接存储图片的地址,这样的坏处就是项目的迁移,文件夹也要跟着备份,备份两次,好处就很明显了,显然存地址跟存内容占用的空间大小就很明显,大大减轻了数据库的压力。因此本文采用的就是数据库存储图片地址,图片直接存储在本机文件夹中。

(如何用jsp编写网页)(jsp怎么做)

正文

营业执照选择自营,必须填写营业执照代码跟照片,非自营的,可以不用填写。代码如下:

<tr>

<td style="text-align: right;"><font size="2px">营业执照代码</font></td>

<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="ra" id="ra" checked="true" onclick="_change(this);" value="a"/> 自营

<input type="radio" name="ra" id="ra" onclick="_change(this); "value="b"/> 非自营

<td><font color="#999999">* 自营必填,同时上传营业执照照片</font></td>

</td> <div id="prvid"></div>

</tr>

上传照片在form表单里必须填写 enctype="multipart/form-data",否则图片就无法上传,只能上传文字信息,但是加了这条语句以后,后台就无法用request.getParameter(arg0)来获取参数了,因为上传的信息全部转化成了字节流,这是我添加以后一直出错发现的问题所在。

(如何用jsp编写网页)(jsp怎么做)

接下来我们需要编写一个upload的类来处理图片的上传,这个类是网上找的,需要添加包

cos.jar,下载地址稍后会在留言里。代码如下

import java.io.File;

import java.io.IOException;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.oreilly.servlet.multipart.FilePart;

import com.oreilly.servlet.multipart.MultipartParser;

import com.oreilly.servlet.multipart.ParamPart;

import com.oreilly.servlet.multipart.Part;

public class Upload {

public static Map<String, String> upload(HttpServletRequest request,

int maxSize, String path) {

//以map形式保存数据 key对应保存的是获取界面上的name名称 value保存的是获取界面上的name对应的值

Map<String, String> map = new HashMap<String, String>();

Part part = null;

try {

MultipartParser mrequest = new MultipartParser(request, maxSize);

mrequest.setEncoding("utf-8");

//遍历所有的part组

while ((part = mrequest.readNextPart()) != null) {

if (part.isFile()) { //判断是否是文件

FilePart filepart = (FilePart) part;//转化成文件组

String fileName = filepart.getFileName();//得到文件名

if (fileName != null && fileName.length() > 0) {

// 取得扩展名

String fileExtName = fileName.substring(

fileName.lastIndexOf(".") + 1).toLowerCase();

// 只上传图片 //判断图片上传的格式是否符合 后缀名是否有效

if (fileExtName.equalsIgnoreCase("jpeg")

|| fileExtName.equalsIgnoreCase("png")||

fileExtName.equalsIgnoreCase("jpg")

|| fileExtName.equalsIgnoreCase("gif")

|| fileExtName.equalsIgnoreCase("ico")

|| fileExtName.equalsIgnoreCase("bmp")

|| fileExtName.equalsIgnoreCase("flv")

|| fileExtName.equalsIgnoreCase("mp4")

|| fileExtName.equalsIgnoreCase("mp3")) {

/*String newFileName = new Date().getTime() + "."+ fileExtName;//重新改文件名 文件名+扩展名 */

String newFileName =new Date().getTime() +fileName;//不改图片名字

String newPath = path + "/" + newFileName; //文件处理文件上传的路径

File newFile = new File(newPath);

filepart.writeTo(newFile); //将文件真正写入到对应的文件夹中

//filepart.getName() 得到 request 要接收的参数的名字

map.put("newFileName", newFileName);

map.put(filepart.getName(), newFileName);//把文件信息保存到map中

map.put("newFile", newFile.toString());

} else {

map.put("geshi", "geshi");

continue;

}// 说明上传的不是图片

} else {

map.put("yes","yes");

continue; // 说明没有选择上传图片

}

} else if (part.isParam()) { //判断是否是参数

ParamPart paramPart = (ParamPart) part;

map.put(paramPart.getName(), paramPart.getStringValue());

}

}

} catch (IOException e) {

e.printStackTrace();

}

return map;

}

}

else if (part.isParam()) { //判断是否是参数

ParamPart paramPart = (ParamPart) part;

map.put(paramPart.getName(), paramPart.getStringValue());

}

通过观察代码,熟悉思路,大概就是先看这个part是否是文件,如果是文件,则进行一系列文件处理,如果不是文件,看是否是参数,如果是参数,则依次用map存储起来,因此在后台就可以map.get()来获取参数了,实验以后发现确实可行,因此后台代码如下:

后台servlet代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("UTF-8");

String PATH = "image/license_pic";

String path = "E:/"+PATH;

Map<String, String> map = Upload.upload(request, 1024 * 1024 * 10, path);

// String newfile = map.get("newFile");

String newFileName =PATH+ map.get("newFileName");

User user = new User();

Shop shop = new Shop();

user.setUsername(map.get("username"));

user.setPassword(map.get("password"));

shop.setName(map.get("name"));

shop.setAddress(map.get("address"));

shop.setYear(map.get("year"));

shop.setPhone(map.get("phone"));

shop.setMaster(map.get("master"));

shop.setIdentity(map.get("identity"));

shop.setLicense(map.get("license"));

shop.setTelephone(map.get("telephone"));

shop.setNote(map.get("note"));

shop.setLicense_pic(newFileName);

System.out.println(newFileName);

UserServiceImpl us = new UserServiceImpl();

ShopServiceImpl ss = new ShopServiceImpl();

try {

int i = 0, j = 0;

i = us.insertUser(user);

System.out.println(user.getUsername());

int id = us.selectByName(user.getUsername()).getId();

j = ss.insertShop(shop, id);

if (i == 1 && j == 1) {

System.out.println("插入成功!");

request.getSession().setAttribute("u", user);

request.getRequestDispatcher("/admin/login/login.jsp").forward(request, response);

} else {

System.out.println("插入失败!");

response.sendRedirect("/shop_Register3/admin/login/register.jsp?error=yes");

}

} catch (Exception e) {

e.printStackTrace();

}

}

(如何用jsp编写网页)(jsp怎么做)

请点击此处输入图片描最后得到结果输出,输出显示文件名称,然后用户名,最后插入成功,说明是可行的,查看自己的E盘,确实看到照片已经上传成功了,这是一个大概的步骤,具体代码因为项目代码多,就不全部上传了,有问题可以留言。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者小疯子程序员所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(如何用jsp编写网页)(jsp怎么做)
本文链接:https://www.51qsb.cn/article/m8ber.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2022-12-26
下一篇2022-12-26

你可能还想知道

发表回复

登录后才能评论