Servlet的5種方式實現(xiàn)表單提交(注冊小功能),后臺獲取表單數(shù)據(jù)實例
用servlet實現(xiàn)一個注冊的小功能 ,后臺獲取數(shù)據(jù)。
注冊頁面:
注冊頁面代碼 :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/RequestDemo/RequestDemo3" method="post">
用戶名:<input type="text" name="userName"><br/>
密碼:<input type="text" name="pwd"><br/>
性別:<input type="radio" name="sex" value="男" checked="checked">男
<input type="radio" name="sex" value="女">女<br/>
愛好:<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="籃球">籃球
<input type="checkbox" name="hobby" value="排球">排球
<input type="checkbox" name="hobby" value="羽毛球">羽毛球<br/>
所在城市:<select name="city">
<option>---請選擇---</option>
<option value="bj">北京</option>
<option value="sh">上海</option>
<option value="sy">沈陽</option>
</select>
<br/>
<input type="submit" value="點擊注冊">
</form>
</body>
</html>
人員實體類: 注意:人員實體類要與表單中的name一致,約定要優(yōu)于編碼
package com.chensi.bean;
//實體類中的字段要與表單中的字段一致,約定優(yōu)于編碼
public class User {
private String userName;
private String pwd;
private String sex;
private String[] hobby;
private String city;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
接收方法一: Servlet頁面(后臺接收數(shù)據(jù)方法一)
package com.chensi;
import java.io.IOException;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet 獲得填寫的表單數(shù)據(jù)
*/
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//獲取傳過來的表單數(shù)據(jù),根據(jù)表單中的name獲取所填寫的值
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
String[] hobbys = request.getParameterValues("hobby");
System.out.println(userName);
System.out.println(pwd);
System.out.println(sex);
for (int i = 0; hobbys!=null&&i < hobbys.length; i++) {
System.out.println(hobbys[i]+"\t");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
得到的數(shù)據(jù):
接收方法二:
package com.chensi;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet 獲得填寫的表單數(shù)據(jù)
*/
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//獲取傳過來的表單數(shù)據(jù),根據(jù)表單中的name獲取所填寫的值
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String strings = (String) names.nextElement();
String[] parameterValues = request.getParameterValues(strings);
for (int i = 0;parameterValues!=null&&i < parameterValues.length; i++) {
System.out.println(strings+":"+parameterValues[i]+"\t");
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
得到的數(shù)據(jù):
接收方法三: 利用反射賦值給User
package com.chensi;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.chensi.bean.User;
/**
* Servlet 獲得填寫的表單數(shù)據(jù)
*/
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//獲取傳過來的表單數(shù)據(jù),根據(jù)表單中的name獲取所填寫的值
try {
User u = new User();
System.out.println("數(shù)據(jù)封裝之前: "+u);
//獲取到表單數(shù)據(jù)
Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String,String[]> m:map.entrySet()){
String name = m.getKey();
String[] value = m.getValue();
//創(chuàng)建一個屬性描述器
PropertyDescriptor pd = new PropertyDescriptor(name, User.class);
//得到setter屬性
Method setter = pd.getWriteMethod();
if(value.length==1){
setter.invoke(u, value[0]);
}else{
setter.invoke(u, (Object)value);
}
}
System.out.println("封裝數(shù)據(jù)之后: "+u);
} catch (IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
得到的結(jié)果:
接收方法四:使用apache 的 BeanUtils 工具來進(jìn)行封裝數(shù)據(jù)(ps:這個Benautils工具,Struts框架就是使用這個來獲取表單數(shù)據(jù)的哦!)
package com.chensi;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.chensi.bean.User;
/**
* Servlet 獲得填寫的表單數(shù)據(jù)
*/
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//獲取傳過來的表單數(shù)據(jù),根據(jù)表單中的name獲取所填寫的值
//方法四:使用beanUtil來封裝User類
User u = new User();
System.out.println("沒有使用BeanUtil封裝之前: "+u);
try {
BeanUtils.populate(u, request.getParameterMap());
System.out.println("使用BeanUtils封裝之后: "+u);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
得到的結(jié)果:
接收方法 方式五: 使用inputStream流來進(jìn)行接收(一般字符串啥的不用這個方法,一般是文件上傳下載時候才會使用這種方法)因為接收到的字符串各種亂碼,編碼問題解決不好
package com.chensi;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.chensi.bean.User;
/**
* Servlet 獲得填寫的表單數(shù)據(jù)
*/
@WebServlet("/RequestDemo3")
public class RequestDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//獲取傳過來的表單數(shù)據(jù),根據(jù)表單中的name獲取所填寫的值
response.setContentType("text/html;charset=UTF-8");
//獲取表單數(shù)據(jù)
ServletInputStream sis = request.getInputStream();
int len = 0;
byte[] b = new byte[1024];
while((len=sis.read(b))!=-1){
System.out.println(new String(b, 0, len, "UTF-8"));
}
sis.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
得到的結(jié)果:(各種亂碼 。。。。)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java使用@Scheduled注解執(zhí)行定時任務(wù)
這篇文章主要給大家介紹了關(guān)于java使用@Scheduled注解執(zhí)行定時任務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法
Feign 是一個聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實現(xiàn)客戶端配置。接下來通過本文給大家介紹Spring Cloud-Feign服務(wù)調(diào)用,需要的朋友可以參考下2021-10-10
SpringBoot 入門教程之引入數(shù)據(jù)傳輸層的方法
這篇文章主要介紹了SpringBoot 入門教程之引入數(shù)據(jù)傳輸層的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

