栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(Java Web) 提交表单 实例讲解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(Java Web) 提交表单 实例讲解

传输过程 表单 to Servlet

开门见山,一张图解释

首先设置表单的

此处的action对应web.xml中的url-pattern web.xml中需要注册好对应的Servlet

method可设置post 或者 get不设置的话默认是get

后文添加的其他文件的web.xml注册代码不在展示





表单提交


	
		姓名
		 
爱好 阅读 跑步 音乐
该课程名称 Java Web Android PHP
交卷请单击: 重答请单击:


  000
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
   
    Register
    test.com.Register
  
  
    Register
    /myURL/*
  

访问index:http://localhost:8080/000/index.html

Servlet中接受处理
package test.com;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

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

public class Register extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Register() {
        super();
    }

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

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		//解决中文乱码,设置字符编码
		request.setCharacterEncoding("utf-8");
		
		//request存储的是一个键值对,key:String val:String[]
		
		//getParameter 根据键获得值
		String name = request.getParameter("name");
		System.out.println("name=" + name);
		//空值为null
		String age = request.getParameter("age");
		System.out.println("age=" + age);
		
		System.out.println("********************");
		
		//枚举类型,获得请求参数的列表
		Enumeration pNames = request.getParameterNames();
		while(pNames.hasMoreElements()){
			String pname = pNames.nextElement();
			//如果参数名称的值有多个,则获取第一个
			String namevalue = request.getParameter(pname);
			System.out.println(pname + "=====" + namevalue);
		}
		
		System.out.println("********************");
		
		//一般用于获取复选框
		String[] pValues = request.getParameterValues("hobby");
		for (String hobby : pValues){
			System.out.println(hobby);
		}
		
		System.out.println("********************");
		
		//获得所有键值对
		Map pMap = request.getParameterMap();
		//获得所有键
		Set keySet = pMap.keySet();
		for (String mpname : keySet){
			String[] values = pMap.get(mpname);
			System.out.print(mpname + "===");
			for (String value : values){
				System.out.print(value + " ");
			}
			System.out.println();
		}
	}

}

控制台输出

name=张三
age=null


name=张三
hobby
=read
course=====Java Web


read
run
music


name=张三
hobby
=read run music
course===Java Web

request的常用方法 setCharacterEncoding

设置字符集,放置中文导致的乱码

request.setCharacterEncoding(“utf-8”);

getParameter

根据参数key获得val,如果没有该键值对接受内容为null

String name = request.getParameter(“name”);

getParameterNames

枚举类型,获得请求参数的列表

Enumeration pNames = request.getParameterNames();

getParameterValues

一般用于获取复选框 用String[]形式接受

String[] pValues = request.getParameterValues(“hobby”);

getParameterMap

获得所有键值对

Map pMap = request.getParameterMap();

Servlet间互传 (域属性)

第一个Servlet

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取对象
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		
        //理解上可以类比成一个Map
        
		//放入requset的域属性中
		//作用域就是一次请求的时间
		request.setAttribute("name", name);
		request.setAttribute("age", age);
		
		//删除属性
		request.removeAttribute("age");
		
		//当前请求转发到另一个Servlet中(还是在Servlet中没有返回浏览器,算这一次请求)
		request.getRequestDispatcher("/otherServlet").forward(request, response);
	}

第二个Servlet

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		//设置字符集
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		
		//获取从另一个Servlet中传入的数据
		String name = (String)request.getAttribute("name");
		String age = (String)request.getAttribute("age");
		System.out.println("name = " + name);
		System.out.println("age = " + age);
		
		//字符集要在生成PrintWriter对象之前使用
		PrintWriter out = response.getWriter();
		
		out.println("可放html代码");		//也要处理乱码
		out.append("show code");
		out.println();		//只是空格
		out.print("
"); //真换行 out.print("name = " + name); out.print("
"); out.write("age = " + age); // 再次跳转 可以跳转到html的页面 // request.getRequestDispatcher("/welcome.html").forward(request, response); }

request路径相关的方法
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		StringBuffer requestURL = request.getRequestURL();
		System.out.println("requestURL == " + requestURL);
		//资源路径
		String requestURI = request.getRequestURI();
		System.out.println("requestURI == " + requestURI);
		//获得请求的上下文路径(就是项目名)
		String contextPath = request.getContextPath();
		System.out.println("contextPath == " + contextPath);
		//获取客户端的ip地址
		String remoteAddr = request.getRemoteAddr();
		System.out.println("remoteAddr == " + remoteAddr);
		//Servlet的路径	精确部分,就是在web.xml中设置的url
		String servletPath = request.getServletPath();
		System.out.println("servletPath == " + servletPath);
		//URI中去掉精确部分
		String pathInfo = request.getPathInfo();
		System.out.println("pathInfo == " + pathInfo);
		//请求的方式 GET或者POST
		String method = request.getMethod();
		System.out.println("method == " + method);
	}

输出

这里以本文开头图片中的表单的url提交,注意文本代码所在的项目名是000

​ 项目名 url的精确部分 非精确部分

URI = ServletContext + ServletPath + PathInfo

requestURL == http://localhost:8080/000/myURL/toText
requestURI == /000/myURL/toText
contextPath == /000
remoteAddr == 0:0:0:0:0:0:0:1
servletPath == /myURL
pathInfo == /toText
method == POST

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号