Servlet的几种常见表单form处理及信息传递

1、a标记的信息传递

在index.html的body里写入一个a标记:
< a href=" hile">处理器< /a>
该href只有一个名称没有任何 / 之类的目录名称,说是在该工程目录下的文件,没有子目录。通过a标记传递参数通常为url后添加"?name=xx&age=xx"等。

html:

<a href="hile?name=奔跑的蜗牛&age=18">处理器</a>

servlet:

package com.sy.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class processServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("GBK");
		String name = req.getParameter("name");
		String age = req.getParameter("age");
		System.out.println("name:"+name);
		System.out.println("age:"+age);
		resp.setCharacterEncoding("GBK"); //处理服务器端返回的中文乱码问题
		resp.getWriter().write(name+' '+age);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req,resp);		
	}
}

web.xml:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>process</servlet-name>
  	<servlet-class>com.sy.servlet.processServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>process</servlet-name>
  	<url-pattern>/hile</url-pattern> 
  </servlet-mapping>

运行结果
2、form表单简单信息提交(默认为Get方式提交)
html:

<form method="post" action="hello">
	name:<input name="xingming"/><br/>
	password:<input name = "pwd"/><br/>
	<input type="submit" value="提交">
</form>

servlet:

package com.sy.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class processServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req.resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String name = req.getParameter("xingming");
		String pwd = req.getParameter("pwd");
		//System.out.println("name:"+name);
		//System.out.println("pwd:"+pwd);
		//resp.setHeader("contentType", "text/html;charset=GBK");
		resp.setCharacterEncoding("GBK");
		resp.getWriter().write(name+' '+pwd);
	}
}

web.xml:

<servlet>
  	<servlet-name>process2</servlet-name>
  	<servlet-class>com.sy.servlet.processServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>process2</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>

在这里插入图片描述
在这里插入图片描述
3、form表单文件的上传读取,这个我不知道为什么不能做到上传的文件名和内容都用中文不乱码,这让我很头疼。(还未得到答案,希望有人指点迷津)

(1)form的简单input里输入的中文出现乱码,而上传的文件内容包含的中文却是正常的。(编码设置如下)
resp.setCharacterEncoding(“GBK”); resp.setContentType(“text/html;charset=GBK”);
在这里插入图片描述
提交后的结果:“奔跑的蜗牛3” 出现乱码
在这里插入图片描述
4、获取客户端所传递过来的header信息、contentlength信息,URL…等信息。这个就直接贴servlet代码了,主要是看客户端信息。

package com.sy.servlet;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class reqInfoServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("GBK");
		resp.setContentType("text/html;charset=UTF-8");
		String url = req.getRequestURI();
		Integer contentlength = req.getContentLength();
		String method = req.getMethod();
		resp.getWriter().write("url:"+url+"\n contentlength:"+contentlength+" \n method:"+method);
		resp.getWriter().write("这是req的Head的信息:");
		Enumeration<String> emt = req.getHeaderNames();
		while (emt.hasMoreElements()){
			String name = emt.nextElement();
			resp.getWriter().write(name+"——> "+req.getHeader(name));
			resp.getWriter().write("<br/>");
		}	
	}
}

5、form单选、复选框的传值。
单选(性别:)还是req.getParameter(“gender”);
复选(课程:)变成req.getParameterValues(“course”)

html:

<form action="answer">
		<input type="hidden" name="hidden" value="test"/>
		性别:<input type="radio" name="gender" value="男"/>男
			  <input type="radio" name="gender" value="女"/>女<br/>
		课程:<input type="checkbox" name="course" value="语文"/>语文
			<input type="checkbox" name="course" value="数学"/>数学
			<input type="checkbox" name="course" value="英语"/>英语
			<input type="submit" value ="提交">
	</form>

servlet:

package com.sy.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OtherServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("GBK");
		String hidden = req.getParameter("hidden");
		System.out.println(hidden);
		String gender = req.getParameter("gender");
		resp.getWriter().write("性别:"+gender+"<br/>");
		resp.getWriter().write("所选课程:"+"<br/>");
		String[] courses = req.getParameterValues("course");
		for(int i=0;i<courses.length;i++){
			resp.getWriter().write(courses[i]+"<br/>");
		}
	}
}

xml:

<servlet>
  	<servlet-name>otherServlet</servlet-name>
  	<servlet-class>com.sy.servlet.OtherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>otherServlet</servlet-name>
  	<url-pattern>/answer</url-pattern>
  </servlet-mapping>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值