1、通过filter解决乱码问题

网页的请求到达之前,先要经过filter的处理;

提取数据出现乱码:request.setCharacterEncoding("UTF-8");

返回数据出现乱码:response.setCharacterEncoding("UTF-8");

在Eclipse中创建过滤器两种方式:注解和xml

1)通过注解创建过滤器:

首先右键new一个filter,取名为 EncodingFilter,点击next,然后看到的如下图,配置url 为 /*

点击finish。

代码如下

 package util;

 import java.io.IOException;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter; @WebFilter(dispatcherTypes = {
DispatcherType.REQUEST,
DispatcherType.FORWARD,
DispatcherType.INCLUDE,
DispatcherType.ERROR
}
, urlPatterns = { "/*" })
public class EncodingFilter implements Filter { public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);//这句话也不能少
} public void init(FilterConfig fConfig) throws ServletException {} }
chain.doFilter(request, response); 表示执行完当前过滤器的操作之后,继续执行这条链条上的下一个过滤器,当然下一个过滤器也是有 doFilter() 这个方法的,直到执行完这一链条上的所有过滤器为止,记住当前过滤器只是链条上的一环。
OK,熟悉责任链模式的朋友应该知道是啥意思了。

2) 通过xml 配置方式
java 代码:

 package util;

 import java.io.IOException;

 import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
} public void init(FilterConfig fConfig) throws ServletException {} }

web.xml中的配置

   <filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>util.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

OK.

2、通过标签显示数据(例子:userlist.jsp中显示所有用户)

  首先编写DAO代码

 /**
* 获取所有用户的信息
* @return 所有用户
*/
public ArrayList<User> getUsers(){
ArrayList<User> users = new ArrayList<User>();
String sql = "select id,username,pwd from users";
Connection conn = DBLib.getConn();
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet set = pstmt.executeQuery();
while(set.next()){
User user = new User();
user.setId(set.getInt("id"));
user.setUserName(set.getString("username"));
user.setPwd(set.getString("pwd"));
users.add(user);
}
set.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return users;
}

  页面通过struts标签进行迭代输出:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="dao.*" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
用户列表
<%
pageContext.setAttribute("list", new UserDAO().getUsers());
%>
<br/>
<br/>
<table>
<logic:iterate id="user" name="list">
<tr>
<td><bean:write name="user" property="userName"/></td>
<td><bean:write name="user" property="pwd"/></td>
</tr>
</logic:iterate>
</table>
<a href="main.jsp">返回主页面</a>
</body>
</html>

用到了logic标签进行迭代,bean标签进行打印。很多标签不熟,不知道,因为很多,到时候要用了再问度老师或古老师。

下面有个参考链接:http://www.cnblogs.com/go-onxp/archive/2012/09/18/2690157.html

  bean:用来创建bean、访问bean和访问bean的属性 ;

  html:用来创建Struts输入表单;

  logic:用来进行逻辑判断、集合迭代和流程控制;

  nested:建立在前三个标签库的基础上,具有前三个标签库的所有功能,只是允许标签间的嵌套;

  tiles:用来创建tiles样式的页面。

  一般用bean和logic就够了。

代码链接:http://pan.baidu.com/s/1miTuwze 提取码:kpa5

Struts1.x 中处理乱码及通过标签显示数据的更多相关文章

  1. Highmaps网页图表教程之绘图区显示标签显示数据标签定位

    Highmaps网页图表教程之绘图区显示标签显示数据标签定位 Highmaps数据标签定位 由于数据标签是和节点一一对应,所以数据标签是依据节点位置进行定位的.本节详细讲解如何对数据标签进行定位. H ...

  2. aspnet中通过多条件筛选来显示数据的实现

    UI图: 功能实现: 1.勾选住哪个选项之后,就加入了筛选.支持姓名的模糊查询. 2.对筛选出来的数据可以直接修改,并更新回数据库. 说明:显示的数据来自T_User表.数据显示控件使用的是 List ...

  3. c# 在datagridview中添加comboboxcolumn 绑定数据库读取显示数据

    datagridview中的comboboxcolumn 从绑定的数据库中读取显示时,只需要注意一点,就是sql语句加个 CStr() 字符串转换函数即可,如下: SELECT CStr(XXX) a ...

  4. Django工程中使用echarts怎么循环遍历显示数据

    前言: 后面要开发测试管理平台,需要用到数据可视化,所以研究了一下 先看下最后的图吧,单击最上方的按钮可以控制柱状图显隐 views.py # -*- coding: utf-8 -*- from _ ...

  5. c# winform 中DataGridView绑定List<T> 不能显示数据

    遇到问题 DataGridView绑定List后,List更新后再次绑定不显示数据 datagridview 绑定数据源的时候 用List是不能显示修改内容的..要用binginglist<T& ...

  6. mvc中ViewBag返回数组如何循环显示数据

    直接在for循环里面定义出viewbag @for (int i = 0; i < ViewBag.permission.Count; i++) { var permission = ViewB ...

  7. [转]Filter实现处理中文乱码,转义html标签,过滤敏感词

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

  8. javaweb中的乱码问题

    0.为什么需要编码,解码, 无论是图片,文档,声音,在网络IO,磁盘io中都是以字节流的方式存在及传递的,但是我们拿到字节流怎么解析呢?这句话就涉及了编码,解码两个过程,从字符数据转化为字节数据就是编 ...

  9. Requset和Response中的乱码问题

    在我们的日常开发中,乱码问题,还是比较经常遇到的,有时候是浏览器端提交的数据到后台乱码了,有时候是后台响应的数据到前台浏览器端展现出现乱码了.下面我们将通过几个简单的例子来说明乱码的由来和解决方式. ...

随机推荐

  1. webstorm识别 ftl文件

    webstorm对freemaker语法是原生支持的,也不需要安装什么插件,你可以直接在webstorm新建个File Types即可 file->settings->file types ...

  2. vue 中引用 百度地图

    1.在 http://lbsyun.baidu.com/ 申请 秘钥 2.在index.html文件中引入 <script src="http://api.map.baidu.com/ ...

  3. Docker:网络模式详解

    Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...

  4. shell 实现文件改名

    修改文件名可以有不同的命令方式,mv 可以实现,但是使用rename 这种专业的改名字很好 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 创建 ...

  5. Python-2.7 配置 tab 自动补全功能

    作者博文地址:http://www.cnblogs.com/liu-shuai/ 之前一直使用shell编程,习惯了shell的 tab 自动补全功能,而Python的命令行却不支持 tab 自动补全 ...

  6. (转)通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加

    通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加 原文:http://www.21yunwei.com/archives/4773 有一个朋友问我如何批量创建用户和设置密码 , ...

  7. 阿冰教你一步一步做Android新闻客户端(二)两种异步线程加载图片的方法

    哈哈哈抱着没人看的心态随便写,直接上代码,各位看官看注释 一种Thread  一种AsyncTask 先不说用框架 public class ImageLoader { private ImageVi ...

  8. 使用params

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. spring开发中commons-logging.jar包的功能

    删除后程序会报错 Java.lang.NoClassDefFoundError 记录日志,通常和  log4j.jar共同使用 原因: 在 sun 开发 logger 前,apache 项目已经开发了 ...

  10. HDU 1394——Minimum Inversion Number——————【线段树单点增减、区间求和】

    Minimum Inversion Number Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...