登录功能的完善 请求行(有七个) 浏览器下载指定图片 上传文件到 out 目录 两个响应体的写方法

 

登录功能的完善

数据库插入数据

servlet


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

public class UploadServlet extends HttpServlet {

//    上传文件 到 out 目录
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            String path = req.getServletContext().getRealPath("WEB-INF/upload"); // 获取到保存的路径
            File file = new File(path);
            if (!file.exists()){
                 file.mkdirs();  //如果不存在,则创建
            }  //file.mkdirs(); 可以创建子父目录
            boolean flag = ServletFileUpload.isMultipartContent(req);
            //如果 返回值是true 表示是文件的格式进行上传
            //如果返回值是false 表示不是文件的格式进行上传  返回错误
            if (flag){
                FileItemFactory factory = new DiskFileItemFactory(); //得到核心工厂对象
                ServletFileUpload sfu = new ServletFileUpload(factory);  //得到文件上传的核心对象
                List<FileItem> fileItemslist = sfu.parseRequest(req);  //得到form表单中 input 标签中的所有的条目
                Iterator<FileItem> iterator = fileItemslist.iterator();  //转换迭代器来进行遍历

                while (iterator.hasNext()){
                    FileItem fileItem = iterator.next();  //获取具体的条目 FileItem

                if(fileItem.isFormField())  //true 是普通的文本  false  是文件
                {
                    //是文本,则不处理
                }else {
                    String filename = fileItem.getName();  //获取到文件的名字
                    File newfile = new File(file,filename);  //构建一个新的文件对象
                    fileItem.write(newfile);  //写入的方法
                }
                }
            }else {
                System.out.println("不是文件上传");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

register2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<p>注册小米账号</p>
<form action="servlet123" method="post"  enctype="multipart/form-data">  <!--跳转到/servlet123 带斜杆的页面-->

    <table style="width: 500px">

        <tr>
            <td>姓名:</td>
            <td><input type="text" name="uname"></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td>男<input type="radio" name="usex" value="男"> 女<input type="radio" name="usex" value="女"></td>
        </tr>
        <tr>
            <td>所在地区:</td>
            <td><input type="text" name="uregion"></td>
        </tr>
        <tr>
        <tr>
        <td>密码:</td>
        <td><input type="password" name="upwd"></td>
    </tr><tr>
        <td>上传头像:</td>
        <td><input type="file" name="ufile"></td>
    </tr>
    </table>
    <input type="submit" value="立即注册">
    <p style="font-size: 12px">注册账号即表示您同意并愿意准守小米用户协议和隐私政策</p>
</form>
</body>
</html>

dao


import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.offcn.dao.UserDao;
import com.offcn.entity.User;
import org.apache.commons.dbutils.QueryRunner;

import javax.sql.DataSource;
import java.sql.SQLException;

public class UserDaoImpl implements UserDao {
    private DataSource ds  = new ComboPooledDataSource();
    private QueryRunner qr  = new QueryRunner(ds);


    @Override
    public int insertUser(User user) {
        int num= 0;
        try {
            String sql ="insert into user(uname,upwd,usex,uregion,ufile)values(?,?,?,?,?)";
            Object[] objects={user.getUname(),user.getUpwd(),user.getUsex(),user.getUregion(),user.getUfile()};

            num = qr.update(sql,objects);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num;
    }
}

service


import com.offcn.dao.UserDao;
import com.offcn.dao.impl.UserDaoImpl;
import com.offcn.entity.User;
import com.offcn.service.UserSerivce;

public class UserSerivceImpl implements UserSerivce {
    private UserDao userDao = new UserDaoImpl();

    @Override
    public int insertUser(User user) {
        return userDao.insertUser(user);
    }
}

实体类


import java.io.Serializable;

public class User implements Serializable {
    private int uid;
    private String uname;
    private String  upwd;
    private String usex;
    private String uregion;
    private String ufile;

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upwd='" + upwd + '\'' +
                ", usex='" + usex + '\'' +
                ", uregion='" + uregion + '\'' +
                ", ufile='" + ufile + '\'' +
                '}';
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }

    public String getUsex() {
        return usex;
    }

    public void setUsex(String usex) {
        this.usex = usex;
    }

    public String getUregion() {
        return uregion;
    }

    public void setUregion(String uregion) {
        this.uregion = uregion;
    }

    public String getUfile() {
        return ufile;
    }

    public void setUfile(String ufile) {
        this.ufile = ufile;
    }

    public User(int uid, String uname, String upwd, String usex, String uregion, String ufile) {
        this.uid = uid;
        this.uname = uname;
        this.upwd = upwd;
        this.usex = usex;
        this.uregion = uregion;
        this.ufile = ufile;
    }

    public User() {
    }
}

service接口




public interface UserSerivce {
    int insertUser(User user);
}

xml

<!--5 完善登录-->
    <servlet>
        <servlet-name>servletqq</servlet-name>
        <servlet-class>com.offcn.servlet.Servlet123</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletqq</servlet-name>
        <url-pattern>/servlet123</url-pattern>
    </servlet-mapping>

 

请求体——有七个


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RequestDemoServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        请求行——有七个
//        String sc = req.getScheme();
//        String ser = req.getContextPath();
//        String path = req.getContextPath();
//        String  mwthod = req.getMethod();
//        String query = req.getQueryString();
//        String uri = req.getRequestURI();
//        String name = req.getServerName();
//        System.out.println(sc); // http  获取协议
//        System.out.println(ser); // /day10_war_exploded  请求路径
//        System.out.println(path); // /day10_war_exploded  获取项目名称
//        System.out.println(mwthod); // GET  请求的方式
//        System.out.println(query); // null  拼凑的方式
//        System.out.println(uri); // /day10_war_exploded/requestDemoServlet  项目名加访问路径
//        System.out.println(name); //localhost  获取 ip 或者 域名

//        请求头
        String sc = req.getHeader("host");

//        EnumConstant<String> enumConstant = req.getHeaderNames();
//        String key = enumConstant.nextElment;


        String path = req.getContextPath();
        String  mwthod = req.getMethod();
        String query = req.getQueryString();
        String uri = req.getRequestURI();
        String name = req.getServerName();

        System.out.println(sc); //

    }
}

 

浏览器下载指定图片


import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
//下载指定图片
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String filename =  req.getParameter("filename");
//a 标签获取方式相同
        resp.setHeader("Content-Disposition","attachment;fileName="+filename);
//设置头格式,下载的方式打开
        InputStream is = req.getServletContext().getResourceAsStream("WEB-INF/upload/1.jpg");
//图片转换成流对象
        ServletOutputStream sos = resp.getOutputStream();
//文件读写操作
        byte[] b = new byte[1024];
        int leng = -1;
        while ((leng=is.read(b))!=-1){
            sos.write(b,0,leng);
        }
//读写操作
            sos.close();
            is.close();
    }
}

 

上传文件到 out 目录


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

public class UploadServlet extends HttpServlet {

//    上传文件 到 out 目录
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            String path = req.getServletContext().getRealPath("WEB-INF/upload"); // 获取到保存的路径
            File file = new File(path);
            if (!file.exists()){
                 file.mkdirs();  //如果不存在,则创建
            }  //file.mkdirs(); 可以创建子父目录
            boolean flag = ServletFileUpload.isMultipartContent(req);
            //如果 返回值是true 表示是文件的格式进行上传
            //如果返回值是false 表示不是文件的格式进行上传  返回错误
            if (flag){
                FileItemFactory factory = new DiskFileItemFactory(); //得到核心工厂对象
                ServletFileUpload sfu = new ServletFileUpload(factory);  //得到文件上传的核心对象
                List<FileItem> fileItemslist = sfu.parseRequest(req);  //得到form表单中 input 标签中的所有的条目
                Iterator<FileItem> iterator = fileItemslist.iterator();  //转换迭代器来进行遍历

                while (iterator.hasNext()){
                    FileItem fileItem = iterator.next();  //获取具体的条目 FileItem

                if(fileItem.isFormField())  //true 是普通的文本  false  是文件
                {
                    //是文本,则不处理
                }else {
                    String filename = fileItem.getName();  //获取到文件的名字
                    File newfile = new File(file,filename);  //构建一个新的文件对象
                    fileItem.write(newfile);  //写入的方法
                }
                }
            }else {
                System.out.println("不是文件上传");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

两个响应体的写方法


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class TableServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        两种方式的使用
//        ServletOutputStream sos =  resp.getOutputStream();
//        sos.write("admin".getBytes());
//        sos.write("你好".getBytes());
////两个同时运行,会显示 ServletOutputStream ,getWriter 却不显示
//        PrintWriter pw =  resp.getWriter();
//        pw.write("admin");
//        pw.write("我很好");

//        写一个表格
        PrintWriter pw =  resp.getWriter();
        pw.write("<table border='1' >");
        pw.write("<tr>");
        pw.write("<td>");
        pw.write("bianhao");
        pw.write("</td>");
        pw.write("<td>");
        pw.write("xingming");
        pw.write("</td>");
        pw.write("</tr>");

        pw.write("<tr>");
        pw.write("<td>");
        pw.write("1");
        pw.write("</td>");
        pw.write("<td>");
        pw.write("zhangsan");
        pw.write("</td>");
        pw.write("</tr>");

        pw.write("<tr>");
        pw.write("<td>");
        pw.write("2");
        pw.write("</td>");
        pw.write("<td>");
        pw.write("lisi");
        pw.write("</td>");
        pw.write("</tr>");
        pw.write("</table>");
    }
}

 

posted @ 2020-08-10 23:08  ping4  阅读(188)  评论(0编辑  收藏  举报