六、从表单和request中获取数据、乱码问题的解决

1、从表单中获取数据和从request范围中获取数据的区别?
2、乱码问题的解决:
|实例|

xml文件中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>prj-servlet08</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
   <servlet-name>SaveDeptServlet</servlet-name>
   <servlet-class>com.bj.SaveDeptServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>SaveDeptServlet</servlet-name>
   <url-pattern>/sds</url-pattern>
  </servlet-mapping>
</web-app>

index.html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="/prj-servlet08/sds" method="post">
 部门名<input type="text" name="dname"><br>
 <input type="submit" name="保存">
 </form>
</body>
</html>

SaveDeptServlet内容:

package com.bj;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import sun.org.mozilla.javascript.internal.ast.NewExpression;

public class SaveDeptServlet extends GenericServlet {

 @Override
 public void service(ServletRequest request, ServletResponse response)
   throws ServletException, IOException {
 
  //从表单中获取数据:
  String dname=request.getParameter("dname");
  System.out.println(dname);//此时在控制台的输出显示为:????乱码
  //第一种解决方式:万能解决方案,POST和get都可以使用
  byte[] bytes=dname.getBytes("ISO-8859-1");
  dname=new String(bytes,"UTF-8");//解码
  System.out.println(dname);
 
  /*
    注意:以下两种方法的区别:
  String dname= request.getParameter("dname");//从表单中获取数据
  Object obj= request.getAttribute(dname);//从request范围中获取数据(之前一定调用过:setAttribute)
  */
  
  //第二种解决方案:调用request的setCharacterEncoding,但是这种方式只适合post请求,只对请求体编码
  //告诉tomcat服务器,请求体中的数据,采用utf-8的方式进行编码
  request.setCharacterEncoding("UTF-8");
  String dname2=request.getParameter("dname");
  System.out.println(dname2);
 }
}

 

posted @ 2017-02-14 08:59  爱笑的berg  阅读(316)  评论(0)    收藏  举报