- 浏览: 89923 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
_Yggd:
bootstrap的扁平化插件,或者就是自己修改源码
bootstrap————前端的利器,抛除后台开发的噩梦 -
white_crucifix:
哦,原来是这样,因为我看对话框的UI不是bootstrap标准 ...
bootstrap————前端的利器,抛除后台开发的噩梦 -
_Yggd:
你说的是第二章图片么?第二张图片是我贴的前端大神网站的图片第一 ...
bootstrap————前端的利器,抛除后台开发的噩梦 -
white_crucifix:
楼主你的对话框是在bootstrap的alert基础上搞出来的 ...
bootstrap————前端的利器,抛除后台开发的噩梦 -
_Yggd:
源:http://docs.huihoo.com/ja ...
java和C++的简单的对比
以下是struts2的拦截器 字符过滤(网上代码有很多,都和这个差不多(我亲测以后发现字符过滤还是不行,就自己弄了一个)):
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fyz.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.StrutsRequestWrapper;
import org.apache.struts2.interceptor.ServletRequestAware;
/**
*
* @author RDGFT
*/
public class EncodingInterceptor extends AbstractInterceptor {
private HttpServletRequest request;
/**
* @return the request
*/
public HttpServletRequest getRequest() {
return request;
}
/**
* @param request the request to set
*/
public void setRequest(HttpServletRequest request) {
this.request = request;
}
private class Request extends StrutsRequestWrapper {
//从web.xml文件中设置的编码
private String encoding = null;
//构造器
public Request(HttpServletRequest request) {
super(request);
encoding = "gbk";//设置编码
}
/**
* 转换编码,由原来的西欧字符集转换成为设定的预设字符集
*/
public String Encoding(String input) {
if (input == null) {
return null;
} else {
try {
return new String(input.getBytes("iso-8859-1"), encoding);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(EncodingInterceptor.class.getName()).log(Level.SEVERE, null, ex);
}
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 对父类的方法进行重写
*/
@Override
public String getParameter(String name) {
return Encoding(getHttpServletRequest().getParameter(name));
}
/**
* 对父类的方法进行重写
*/
@Override
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = Encoding(values[i]);
}
}
return values;
}
}
@Override
public String intercept(ActionInvocation ai) throws Exception {
ActionContext actionContext = ai.getInvocationContext();
this.request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
if (this.request.getMethod().compareToIgnoreCase("post") >= 0) {
this.getRequest().setCharacterEncoding("GBK");
System.out.println("进入拦截器post");
} else {
this.setRequest(new Request(this.request));
System.out.println("进入拦截器get");
}
return ai.invoke();
}
}
关于上述代码,我根据网上的代码改了改,初级版本是继承RequestAware(是不是这个,大家明白就行了)接口,但是request是null
你现在看到的版本扩展了request不是null(转码失败),
struts.xml文件:
<interceptors>
<interceptor name="Encoding" class="com.fyz.interceptor.EncodingInterceptor"></interceptor>
<interceptor-stack name="Encod">
<interceptor-ref name="Encoding"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref><!-- 必须引入这个,否则request不会再往下传-->
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="Encod"></default-interceptor-ref>
以下struts2过滤器本人亲测是可行的代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fyz.filter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
/**
*
* @author RDGFT
*/
public class EncodingFilter extends StrutsPrepareAndExecuteFilter implements Filter{
private String encoding = "";
//扩展原来的request,使原来的用get方法得到的参数转换成相应的编码,不影响原来的功能
private class Request extends HttpServletRequestWrapper {
//从web.xml文件中设置的编码
private String encoding = null;
//构造器
public Request(HttpServletRequest request) {
super(request);
encoding = this.encoding;//设置编码
}
/**
* 转换编码,由原来的西欧字符集转换成为设定的预设字符集
*/
public String Encoding(String input) {
if (input == null) {
return null;
} else {
try {
System.out.println(input);
return new String(input.getBytes("iso-8859-1"), encoding);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(EncodingFilter.class.getName()).log(Level.SEVERE, null, ex);
}
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 对父类的方法进行重写
*/
@Override
public String getParameter(String name) {
return Encoding(getHttpServletRequest().getParameter(name));
}
/**
* 对父类的方法进行重写
*/
@Override
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = Encoding(values[i]);
}
}
return values;
}
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (req.getMethod().compareToIgnoreCase("post") >= 0) {
request.setCharacterEncoding(encoding);
} else {
request = new Request(req);
System.out.println("get方法中");
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
System.out.println(encoding);
}
}
web.xml文件的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- struts2的和核心过滤器-->
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.fyz.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>ANSYC</dispatcher>
<!-- 异步处理请求-->
<!--对全站点进行编码转换 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<jsp-config>
<taglib>
<taglib-uri>http://com.fyz/tagslib</taglib-uri>
<taglib-location>/WEB-INF/mypage.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
[/align]
web.xml文件过滤器的配置的顺序问题。一定是自定义的过滤器在前,然后struts2的
核心过滤器在后(要不然还是转码失败)
希望路过的各位大神不吝赐教
有一个最简单的方法就是在你的struts.xml文件中添加:
<constant name="struts.i18n.encoding" value="GBK" /
>
<constant name="struts.i18n.encoding" value="GBK" /
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fyz.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.StrutsRequestWrapper;
import org.apache.struts2.interceptor.ServletRequestAware;
/**
*
* @author RDGFT
*/
public class EncodingInterceptor extends AbstractInterceptor {
private HttpServletRequest request;
/**
* @return the request
*/
public HttpServletRequest getRequest() {
return request;
}
/**
* @param request the request to set
*/
public void setRequest(HttpServletRequest request) {
this.request = request;
}
private class Request extends StrutsRequestWrapper {
//从web.xml文件中设置的编码
private String encoding = null;
//构造器
public Request(HttpServletRequest request) {
super(request);
encoding = "gbk";//设置编码
}
/**
* 转换编码,由原来的西欧字符集转换成为设定的预设字符集
*/
public String Encoding(String input) {
if (input == null) {
return null;
} else {
try {
return new String(input.getBytes("iso-8859-1"), encoding);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(EncodingInterceptor.class.getName()).log(Level.SEVERE, null, ex);
}
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 对父类的方法进行重写
*/
@Override
public String getParameter(String name) {
return Encoding(getHttpServletRequest().getParameter(name));
}
/**
* 对父类的方法进行重写
*/
@Override
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = Encoding(values[i]);
}
}
return values;
}
}
@Override
public String intercept(ActionInvocation ai) throws Exception {
ActionContext actionContext = ai.getInvocationContext();
this.request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
if (this.request.getMethod().compareToIgnoreCase("post") >= 0) {
this.getRequest().setCharacterEncoding("GBK");
System.out.println("进入拦截器post");
} else {
this.setRequest(new Request(this.request));
System.out.println("进入拦截器get");
}
return ai.invoke();
}
}
关于上述代码,我根据网上的代码改了改,初级版本是继承RequestAware(是不是这个,大家明白就行了)接口,但是request是null
你现在看到的版本扩展了request不是null(转码失败),
struts.xml文件:
<interceptors>
<interceptor name="Encoding" class="com.fyz.interceptor.EncodingInterceptor"></interceptor>
<interceptor-stack name="Encod">
<interceptor-ref name="Encoding"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref><!-- 必须引入这个,否则request不会再往下传-->
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="Encod"></default-interceptor-ref>
大家可以试试是不是我说的那样
以下struts2过滤器本人亲测是可行的代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.fyz.filter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
/**
*
* @author RDGFT
*/
public class EncodingFilter extends StrutsPrepareAndExecuteFilter implements Filter{
private String encoding = "";
//扩展原来的request,使原来的用get方法得到的参数转换成相应的编码,不影响原来的功能
private class Request extends HttpServletRequestWrapper {
//从web.xml文件中设置的编码
private String encoding = null;
//构造器
public Request(HttpServletRequest request) {
super(request);
encoding = this.encoding;//设置编码
}
/**
* 转换编码,由原来的西欧字符集转换成为设定的预设字符集
*/
public String Encoding(String input) {
if (input == null) {
return null;
} else {
try {
System.out.println(input);
return new String(input.getBytes("iso-8859-1"), encoding);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(EncodingFilter.class.getName()).log(Level.SEVERE, null, ex);
}
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 对父类的方法进行重写
*/
@Override
public String getParameter(String name) {
return Encoding(getHttpServletRequest().getParameter(name));
}
/**
* 对父类的方法进行重写
*/
@Override
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = Encoding(values[i]);
}
}
return values;
}
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (req.getMethod().compareToIgnoreCase("post") >= 0) {
request.setCharacterEncoding(encoding);
} else {
request = new Request(req);
System.out.println("get方法中");
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
System.out.println(encoding);
}
}
web.xml文件的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- struts2的和核心过滤器-->
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.fyz.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>ANSYC</dispatcher>
<!-- 异步处理请求-->
<!--对全站点进行编码转换 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<jsp-config>
<taglib>
<taglib-uri>http://com.fyz/tagslib</taglib-uri>
<taglib-location>/WEB-INF/mypage.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
[align=left]注意:
[/align]
web.xml文件过滤器的配置的顺序问题。一定是自定义的过滤器在前,然后struts2的
核心过滤器在后(要不然还是转码失败)
希望路过的各位大神不吝赐教
发表评论
-
推荐web前端开发一站式解决方案--- ---amazeui
2014-12-17 20:18 769中国首个开源 HTML5 跨屏前端框架 之前在网站上分享 ... -
你经常不知觉间用的那些非常有用的apache commons类库的详解
2014-10-20 22:26 1285源:http://blog.csdn.net/wiker_yo ... -
简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
2014-09-11 20:03 1066bootstrap可以为我们做: ... -
关于java中的泛型以及用面向对象的继承性来简化DAO的代码量
2013-09-09 22:53 1265今天看到这段代码,加深了对java中的泛型编程的理解: ... -
javaEE jar包总汇之常用
2013-09-07 15:22 1527不知道大家平时做东西的时候会不会缺少jar包呢? 不知道你 ... -
spring jdbctemplate自定义分页的小白实现(大神轻拍)
2013-08-08 17:22 1781高手请看这里:http://blog.csdn.net/YUH ... -
struts2中访问servlet API 的方法以及优劣性
2013-07-20 10:15 1095虽然struts2做到了与servlet解耦,但是有时候我们还 ... -
框架整合之struts2+spring3
2013-07-19 20:24 803在整合struts2和spring3的时候还费了挺大的劲儿 ... -
品红的聊天页面做好了
2013-07-18 15:00 765这两天在做品红的聊天页面 QAQ。 由于聊天采用的是ajax ... -
spring最简单的aop实现
2013-07-15 20:35 767其实spring中的aop就是设 ... -
spring 的IOC
2013-07-15 19:33 672源:http://www.java3z.com/cwbwebh ... -
简单的企业信息管理页面(品红)完成了,希望各位大神能指导指导... ...撒花鼓掌
2013-07-07 16:29 554由于加上框架的jar包挺大的,上传不上来,所以我放在了pud ... -
struts2 jsp和action相互传值通信的方式
2013-06-08 20:34 2127首先是jsp向action传值: 首先你的jsp前端代码的 ... -
自定义标签怎样获取action或者jsp页面的值
2013-06-07 22:50 838RT <s:set name="id&qu ... -
关于上一篇编码的文章
2013-06-07 19:32 824有关<constant name="strut ... -
struts2自定义标签+hibernate分页的方法
2013-05-30 20:41 910分页对于数据库的应用来讲是再平常不过了, 不过关于为什么要进行 ... -
struts 数据的校验问题
2013-04-27 19:53 757<%@ page language="java ... -
struts的类型转换
2013-04-27 18:47 756源:http://wanglihu.iteye.com/blo ...
相关推荐
本文将详细介绍操作系统中的处理机调度算法,并以C++代码示例的形式,深入探讨动态进程优先调度算法、时间片轮转调度算法以及资源分配中的银行家算法。 首先,我们来关注动态进程优先调度算法。该算法的核心思想是...
java操作word用的java2word.jar和java2word.exe。java读写word动态向word模板总填充数据,支持2003、2007、2010word版本。功能简单强大。需要的童靴可以试一下,代码很简单。
- **开发工具**: 推荐使用STM32CubeMX进行项目初始化配置,可以快速生成HAL库或LL库代码。 - **在线课程与书籍**: 可以参考《零死角玩转STM32》系列书籍,特别是针对F1系列的学习资料,非常适合初学者。 - **社区...
标题中的“23333_understanding2j7_possible2h6_原型演示_”可能是一个项目代码或者版本标识,它并非直接与IT知识点相关,但可以推测这可能是一个关于原型设计的项目或教程,其中“理解2j7”和“可能的2h6”可能是...
PS学习教程,想学习PS的童靴可以下来看看
描述数值分析算法原理,并有c代码,适用于研究算法的童靴们
全套高焕堂讲义资料,需要的童靴可以拿去看看,不过分数有点高,毕竟我也是发钱听得课,一共四卷,总共20分,必须全部下载才能打开
是介绍java的不错的书籍哦,童靴们可以下载看看哦
jsoup1.7.2,jd2chm工具制作的,保证可以使用,有兴趣的童靴可以下载!!
【标题】"ibatis小例子"揭示了一个关于iBatis框架的初级教程,它是一个用于Java应用程序的持久层框架,特别适用于那些希望将SQL映射到Java代码中的开发者。iBatis提供了一种灵活的方式,使得数据库交互变得更加简单...
* 用户口令是用户自己选择的一个字符串,对其他用户完全保密,是登录系统时识别用户的唯一根据。 * 系统在建立之初,仅有 root 用户,其它的用户则是由 root 用户创建的。 四、修改口令 * Linux 允许用户在登录...
上位机控制三菱变频器 DEMO (VB.NET), ...本程序有详细步骤和超详细的中文注释,可以控制多台变频器,采用modbus协议 ,内有CRC计算程序代码,有需要学习自动化控制的及上位机软件控制的童靴 学习
全套高焕堂讲义资料,需要的童靴可以拿去看看,不过分数有点高,毕竟我也是发钱听得课,一共四卷,总共20分,必须全部下载才能打开
全套高焕堂讲义资料,需要的童靴可以拿去看看,不过分数有点高,毕竟我也是发钱听得课,一共四卷,总共20分,必须全部下载才能打开
全套高焕堂讲义资料,需要的童靴可以拿去看看,不过分数有点高,毕竟我也是发钱听得课,一共四卷,总共20分,必须全部下载才能打开
mongodb net驱动源码,使用.net的童靴可以用它方便的连接mongodb 数据库。
STM32_深入浅出 - STM32 学前班教程之一:为什么是它 经过几天的学习,基本掌握了 STM32 的调试环境和一些基本知识。想拿出来与大家共享
这是本人总结的最全的一套面试题,上百家大型公司的面试题,如果全部搞会,面试最低5--6k是没有问题的,希望可以助那些还在为找到工作而发愁的童靴们找到一份满意的工作!
有了这套视频教程,完全可以在家里自己学习。因为视频和实培训是一模一样的,对于经济条件不好的同学,这样的视频教程就更加珍贵了。。 需要说的是,现在ios真的很火,工资也非常高。所以往ios方面发展的同学拿到...