ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP(项目):污染举报系统

2021-01-30 11:02:19  阅读:210  来源: 互联网

标签:varchar String DEFAULT id 污染 JSP NULL 举报 255


项目地址:https://github.com/shao12138/Pollution-reporting-system

1,项目简介

通过收集在手机定位模式下拍摄的照片,解析其中的经纬度,然后标注到百度地图并集中化展示,实现污染举报仅需上传图片即可。

2,需求分析

河流污染举报系统的主要角色主要有三种:普通用户(游客),注册用户,系统管理员。不同的角色具有不同的权限,各角色需求分析如下:

  • 普通用户:主页访问、资讯查看,留言公告,污染查看,下载移动端。
  • 注册用户:主页访问、资讯查看,留言查看,污染查看,下载移动端,留言,污染举报。
  • 系统管理员:用户管理、公告管理,留言管理,污染管理。

3,数据库设计

mapuser表:用于存储用户的信息,分别代表:id、账号、昵称、密码、身份证、邮箱、电话、是否是管理员(1是/0不是)。

CREATE TABLE `mapuser` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `number` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `personnumber` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `tellnumber` varchar(255) DEFAULT NULL,
  `kind` varchar(255) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

mappic表:用于存储污染举报信息,分别代表:id、账号(举报人)、经度、纬度、图片存储的本地地址。

CREATE TABLE `mappic` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `number` int(11) DEFAULT NULL,
  `lat` varchar(255) DEFAULT NULL,
  `log` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

mapmessage表:用于存储用户讨论留言内容,分别代表:id、账号(留言人)、昵称、留言信息。

CREATE TABLE `mapmessage` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `number` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `message` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

mapnotice表:用于存储公告信息,分别代表:id、标题、日期、内容。

CREATE TABLE `mapnotice` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `date` varchar(255) DEFAULT NULL,
  `content` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

4,核心算法——文件上传和解析经纬度

需要引入:

        <form action="InsertJubao" name="form1" id="form1" method="post" enctype="multipart/form-data">
            <fieldset style="width: 400px; margin: 0px auto; color: red;">
                <table class="table3">
                    <tr>
                        <td style="font-size: 25px; color: green;">照片:</td>
                        <td>&nbsp;&nbsp;</td>
                        <td><input type="file" id="filePath" name="image" required="required"
                                   style="font-size: 20px;color:blue;" value="选择"/></td>
                    </tr>
                    <tr>
                        <td><input type="reset" value="重置"
                                   style="width: 80px; height: 30px; color: blue; font-weight: bold; font-size: 20px; opacity: 0.7;">
                        </td>
                        <td>&nbsp;&nbsp;</td>
                        <td><input type="submit" name="Submit" value="上 传"
                                   style="width: 80px; height: 30px; color: blue; font-weight: bold; font-size: 20px; opacity: 0.7;">
                        </td>
                    </tr>
                </table>
            </fieldset>
        </form>
@WebServlet(name = "InsertJubao", urlPatterns = {"/InsertJubao"})
@MultipartConfig
public class InserJubao extends HttpServlet {
    public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html;charset=UTF-8");
        req.setCharacterEncoding("UTF-8");
        double lat = 0.0;
        double log = 0.0;
        Date date = new Date();
        String pat2 = "yyyy-MM-dd-HH-mm-ss-SSS";//模板2
        SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
        String nowDate = sdf2.format(date);
        PrintWriter out = res.getWriter();
        //获取上传文件
        Part part = req.getPart("image");
        //获取包含文件名的字符串
        String fileNameInfo = part.getHeader("content-disposition");
        //提取上传文件的原始文件名
        String fileName = fileNameInfo.substring(fileNameInfo.indexOf("filename=\"") + 10, fileNameInfo.length() - 1);
        String path = getServletContext().getRealPath("/upload/");
        part.write( path + nowDate + "-" + fileName);
        File file = new File( path + nowDate + "-" + fileName);
        try {
            Metadata metadata = JpegMetadataReader.readMetadata(file);
            for (Directory directory : metadata.getDirectories()) {
                for (Tag tag : directory.getTags()) {
                    if (tag.getTagName().equals("GPS Latitude")) {
                        lat = change(tag.getDescription());
                    } else if (tag.getTagName().equals("GPS Longitude")) {
                        log = change(tag.getDescription());
                    }
                }
            }
            String url = "/upload/" + nowDate + "-" + fileName;
            mapDao dao = (mapDao) getServletContext().getAttribute("map");
            String sql = "insert into mappic(number,lat,log,url)values(?,?,?,?)";
            try {
                dao.insert(sql, ((User) req.getSession().getAttribute("user")).getNumber(), lat, log, url);
            } catch (Exception e) {
                e.printStackTrace();
            }
            out.print("上传成功!");
            res.setHeader("refresh", "2;wuran.jsp");
        } catch (JpegProcessingException e) {
            out.print("皮?没有经纬度!");
            res.setHeader("refresh", "2;jubao.jsp");
            e.printStackTrace();
        }
    }

    public double change(String temp) {
        String du = "0";
        if (temp.indexOf("°") != -1) {
            du = temp.substring(0, temp.indexOf("°"));
        }
        String fen = "0";
        if (temp.indexOf("°") != -1) {
            fen = temp.substring(temp.indexOf("°") + 1, temp.indexOf("'"));
        }
        String miao = "0";
        if (temp.indexOf("'") != -1) {
            miao = temp.substring(temp.indexOf("'") + 1).replace("\"", "");
        }
        double a, b, c = 0.0;
        a = Double.parseDouble(du);
        b = Double.parseDouble(fen) / 60;
        c = Double.parseDouble(miao) / 60 / 60;
        return a + b + c;
    }
}

 

标签:varchar,String,DEFAULT,id,污染,JSP,NULL,举报,255
来源: https://blog.csdn.net/qq_42192693/article/details/113415179

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有