J2ME/J2EE实现用户登录交互 实现代码

发布时间:2020-02-01 01:14    浏览次数 :

[返回]

服务器代码:
LoginServlet:
package com;
复制代码 代码如下:
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** *//*******************************************************************************
*
* @author zdw
*
*/
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// 得到客户端传入的数据(用户名和密码)
String username = request.getParameter("username");
String password = request.getParameter("password");
// 构建输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
// 逻辑操作(这里写你的逻辑判断)
if ("zdw".equals(username) && "admin".equals(password))
{
// 响应数据
dos.writeUTF("true");
} else
{
// 响应数据
dos.writeUTF("false");
}
//
byte[] data = baos.toByteArray();
// 设置服务器响应参数
response.setStatus(HttpServletResponse.SC_OK);
J2ME/J2EE实现用户登录交互 实现代码。response.setContentLength(data.length);
response.setContentType("application/octet-stream");
OutputStream os = response.getOutputStream();
os.write(data);
os.close();
}
}

一、产生乱码的原因:

源码下载:点此下载
注意此工程为MyEclipse工程,您需要安装wtk和tomcat才能正常运行此程序.
登录图:图片 1

当浏览器通过http协议访问web服务器时,假设此时浏览器的编码是utf-8,当把请求发给web服务器时,web服务器却以ISO-8859-1编码接收,所以就产生了乱码。

 

//设置web服务器接收时,以utf-8形式接收,如下:

request.setCharacterEncoding(“utf-8”); //编码方式设置和浏览器一样(还有常见的gbk、gb2312)

//设置浏览器显示时,以utf-8显示。

response.setContentType("text/html;charset=utf-8");

 

 

二、三种因为中文而产生乱码举例:

创建一个Web Project(Encoding.java)用于测试,中文乱码问题。

(1)表单form

a)Post 提交

创建一个Html文件(TestFormEncoding.html)代码如下:

 

 

 

 

 

"keywords"content="keyword1,keyword2,keyword3">

"description"content="this is my page">

"content-type"content="text/html; charset=UTF-8">

 

 

 

 

 

"/Encoding/TestEncoding"method="post">

姓 名:"text"name="username"/>

"submit"value="提交"/>

 

 

 

创建一个Servlet文件(TestEncoding.java),代码如下:

package com.focus;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class TestEncoding extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

 

response.setContentType("text/html");

//PrintWriter out = response.getWriter();

String username = request.getParameter("username");

System.out.println("欢迎 "+username+" 访问本网站");

}

 

}

当分别输入focus、哈哈 时,在服务器窗口显示如下:

图片 2

输入哈哈,出现了如下的乱码。

图片 3

解决方法:

doPost代码如下:

response.setContentType("text/html");

//设置Web服务器的默认编码为utf-8,即接收浏览器请求时,以utf-8编码方式解析。

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

System.out.println("欢迎 "+username+" 访问本网站");

当分别输入哈哈、嘻嘻时,效果如下:

图片 4

当把doPost代码替换如下时:

publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

 

response.setContentType("text/html");

PrintWriter out = response.getWriter();

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

//输出到客户端,而不是在服务器输出

out.println("欢迎 "+username+" 访问本网站");

}

浏览器输出结果如下:

图片 5

因为浏览器请求Web服务器,Web服务器响应浏览器的编码方式都是不同的,都需要互相转换。

doPost代码开头添加如下代码时:

response.setContentType("text/html;charset=utf-8");

即可处理Web服务器响应浏览器时,把编码装换为utf-8

图片 6

 

b)Get 提交

TestFormEncoding.html代码只把method=post改为method=get

 

改变TestEncoding.java如下:

 

package com.focus;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class TestEncoding extends HttpServlet {

 

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

out.println("欢迎 "+username+" 访问本网站");

 

}

}

效果如下:

图片 7

(2)超链接

如在TestFormEncoding.html下添加

"/Encoding/TestEncoding?username=哈哈">点击我

效果如下:

 

图片 8

图片 9

→和Get处理中文乱码的方式相同。

因为超链接的默认提交方式为Get

 

(3)sendRedirect() 发生乱码

下一篇:没有了