敲一个servlet项目

首先
pom.xml引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
    <groupId>com.bw</groupId>
    <artifactId>exe_servlet_12.25</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!-- mysql  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--  servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 指定端口 -->
                    <port>8080</port>
                    <!-- 请求路径 -->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

这个是项目的一个分布
在这里插入图片描述
web.xml
导servlet
里面有路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>exe_servlet_12.25</servlet-name>
        <servlet-class>com.bw.servlet.DemoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>exe_servlet_12.25</servlet-name>
        <url-pattern>/demoServlet</url-pattern>
    </servlet-mapping>
</web-app>

demoServlet class类里面

继承 HttpServlet
实现里面的方法
doPost()    doGet()     init()         destory()
//声明一个变量
 PrintWriter printWriter = resp.getWriter();
  printWriter.print("Hello word!!!");
这个是用来打印在浏览器上面的

这个是上传文件导进去的依赖

pom.xml

 <!--fileUpdate -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

添加页面

<form action="/addServlet" method="post" enctype="multipart/form-data">

Addservlet

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = null;
        String sex= null;
        String photo = null;
        String birthDate = null;
        //获取需要存储的路径
        String path = req.getSession().getServletContext().getRealPath("img");
        System.out.print("绝对路径:"+path);
        //判断 是否是 multifile  返回布尔
        boolean content = ServletFileUpload.isMultipartContent(req);
        if(content){
            try{
                //1.创建一个DisFileItemFactory工厂
                DiskFileItemFactory factory = new DiskFileItemFactory();
                //2.创建一个文件解析器
                ServletFileUpload upload = new ServletFileUpload(factory);
                //3.解决上传文件的乱码
                upload.setHeaderEncoding("utf-8");
                //4.使用ServletFileUpload解析上传文件上传的文件,
                //解析结果返回List<FileItem> 集合 每一个FileItem 对应一个form表单的输入项
                List<FileItem> list = upload.parseRequest(req);
                //遍历list里面的数据
                Iterator<FileItem> iterator = list.iterator();
                //一个一个遍历循环
                while(iterator.hasNext()){
                    // FileItem 指的是上传的文件
                    FileItem item = iterator.next();
                    //fieldName  上传属性的名字
                    String fieldName = item.getFieldName();
                    //然后让这个 fileNmae 属性名字与form表单里面的互相比较
                    //if 判断 相当于  一个是键 一个是值
                    if("name".equals(fieldName)){
                        //以防乱码
                        name = item.getString("utf-8");
                    }
                    if("sex".equals(fieldName)){
                        sex =  item.getString("utf-8");
                    }
                    if("file".equals(fieldName)){
                        //获取上传文件的名称
                        String fileName = item.getName();
                        //截取
                        String fileLastName = fileName.substring(fileName.lastIndexOf("."));
                        System.out.print("截取的名字:"+fileLastName);
                        //新文件的名字在
                        fileName =  UUID.randomUUID().toString()+fileLastName;
                        System.out.print("新的名字:"+fileName);
                        //数据保存的路径
                        photo ="/img"+"/"+fileName;
                        System.out.print("文件总路径:"+photo);
                        //获取上传文件的输入流
                        InputStream in = item.getInputStream();
                        //创建一个文件输出流
                        FileOutputStream out = new FileOutputStream(path + "/" + fileName);
                        //创建一个缓冲区
                        byte buffer[] = new byte[1024];
                        //判断输入流的数据是否已经读完的 标识
                        int len = 0;
                        //循环将输入流读入到缓冲区里面len >0  标识还有数据
                        while((len = in.read(buffer))>0){
                            out.write(buffer,0,len);
                        }
                        in.close();
                        out.close();
                    }
                    if("birthDate".equals(fieldName)){
                        birthDate = item.getString("utf-8");
                    }
                }
                String sql =" insert into Student values(null,'"+name+"','"+photo+"','"+sex+"','"+birthDate+"')";
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql:///linux", "root", "root");
                PreparedStatement pre = con.prepareStatement(sql);
                pre.executeUpdate();
                resp.sendRedirect("/listServlet");
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }

猜你喜欢

转载自blog.csdn.net/fenghuanxia66/article/details/85254641
今日推荐