Servlet获取form表单数据

Servlet是什么?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

如何使用Servlet获取表单数据?

一、建立连接

要实现Servlet传递表单数据的效果,我们需要一个表单数据输入端的页面和一个表单数据接收端的Java文件

首先需要创建一个Web工程,再将下载好的servlet-api.jar导入工程

接下来我们在WebContent文件夹内创建JSP页面文件,比如“login.jsp”,同时创建<form>表单

然后在Java Resources目录下的src目录中创建相应接收端"LoginServlet.java"

创建完之后如何把两个文件联系起来呢?

需要首先在login.jsp中创建好的<form>表单标签中添加action元素指向java文件,格式如下:

action="./LoginServlet"

这样就指定好了用户输入的表单数据将要传递给谁

<form action="./LoginServle">

扫描二维码关注公众号,回复: 9421148 查看本文章

           <input placeholder="Pleace write your name" name="user_name"/>

</form>

数据接收端

package com.jd.servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {  

     private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       String userName = request.getParameter("user_name");    

       System.out.println(userName);  

 }

}

如果是多条数据:

 

 


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

    <title>Insert title here</title>

    </head>

    <body>

        <form action="./LoginServlet">

       <input type="checkbox" name="hobby" value="1" />sing

        <input type="checkbox" name="hobby" value="2" />dance

        <input type="checkbox" name="hobby" value="3" />Rap

        <input type="checkbox" name="hobby" value="4" />basketball

    </form>

    </body>

</html>

数据接收:


package com.jd.servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

    

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String [] hobbies = request.getParameterValues("hobby");

    for (String hobby : hobbies) {//在控制台打印出用户选择对应的Value值

        System.out.println(hobby);

    }

    }

}

文件上传:fileupload jar包上传。
<form action="../form_ajax" method="post" enctype="multipart/form-data">
    用户名:<input type="text" name="username"/><br/>
    选择要上传的文件<br/>
    请选择文件:<input type="file" name="myfile"/><br/>
    <input type="submit" value="上传"/><br/>
</form>

@MultipartConfig
public class FileUpload1Servlet extends HttpServlet {

    private static Logger LOGGER = Logger.getLogger(FileUpload1Servlet.class);

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      if(ServletFileUpload.isMultipartContent(request)){//1、判断当前form表单的编码方式是不是为enctype="multipart/form-data"
FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
servletFileUpload.setFileSizeMax(1024*1024*6*10);
List<FileItem> fileItemList = null;
try {
fileItemList = servletFileUpload.parseRequest(request);//2、将form表单中每个携带数据的标签转换成每个FileItem对象并存到集合中
} catch (FileUploadException e) {
e.printStackTrace();
request.setAttribute("message", "文件太大,上传失败");
request.getRequestDispatcher("result.jsp").forward(request, response);
return;
}

for(FileItem fileItem : fileItemList){//3、获取form表单所携带的数据
if(fileItem.isFormField()){//为true表示为非文件类型的标签
String key = fileItem.getFieldName();//summary
String value = fileItem.getString();//summary对相的数据
System.out.println(key+":"+value);
}else{//文件类型
try {
String oldFileName = fileItem.getName();
String fileNameSuffix=oldFileName.substring(oldFileName.lastIndexOf("."));
System.out.println(fileNameSuffix);
String fileNamePrefix = UUID.randomUUID().toString();
// fileItem.write(new File("D:\\"+fileNamePrefix+fileNameSuffix));//未发布路径

String path = "D://"+fileNamePrefix+fileNameSuffix;
fileItem.write(new File(path+fileNamePrefix+fileNameSuffix));//发布路径
System.out.println(path);
} catch (Exception e) {
e.printStackTrace();
}
}
}
request.setAttribute("message", "文件上传成功");
request.getRequestDispatcher("result.jsp").forward(request, response);
}else{
request.setAttribute("message", "当前form表单enctype属性的属性值非multipart/form-data");
request.getRequestDispatcher("result.jsp").forward(request, response);
}
    }

}
 

request.getRequestDispatcher("result.jsp").forward(request, response);

跳转 页面result.jsp写  ${message};

      

 

发布了44 篇原创文章 · 获赞 5 · 访问量 4009

猜你喜欢

转载自blog.csdn.net/wangdada___/article/details/102858189