Ⅰ j2ee servlet向jsp中傳送數據時候亂碼,
如果你已經用了抄filter,並且頁襲面編碼都採用了UTF8。
如果應用伺服器用的是tomcat,那麼可能的原因是你的ajax用的是get方式提交的請求。
有兩種方式解決:
1、ajax請求改成post方法,不知道怎麼用就網路一下。
2、修改tomcat的設置,找到server.xml文件中的
<Connector
port="8080"
...
在後面加上URIEncoding="UTF-8"
Ⅱ java程序中文漢字會亂碼
我遇到過和你一樣的錯誤,
在你編寫String gb = new String(「資料庫查處來的中文」.getBytes("ISO-8859-1"),"UTF-8");這句話的專時候請注屬意一下「資料庫查處來的中文」必須是ISO-8859-1編碼,否則轉換失敗。
另外光資料庫是UTF-8編碼是不行的,請確定一下資料庫建表的時候是否設置成UTF-8編碼。
希望我的回答能夠幫助你,謝謝
Ⅲ 在J2EE中,使用Servlet過濾器,需要在web.xml中配置什麼元素
需要配置<filter>標簽,這個標簽就是用作攔截器的,具體的配置如下:
<filter> --- 配置過濾器
<filter-name>FirstFilter</filter-name>
---為過濾器起一個名字
<filter-class>com.itheima.filter.FirstFilter</filter-class>
---過濾器類的全路徑名
<init-param>
--- 可選的 可以配置多個 過濾器的初始化參數可以在過濾器中通過FilterConfig對象來獲取
<param-name>name1</param-name>
<param-value>value1</param-value>
</init-param>
</filter>
<filter-mapping>
--- 配置過濾器的攔截路徑 ,一個<Filter>可以配置多個<filter-mappint>
<filter-name>FirstFilter</filter-name>
---為哪個過濾器進行配置
<url-pattern>/*</url-pattern>
--- 攔截哪個路徑 其中url-pattern的寫法和學習Serlvet時的url-pattern的寫法相同 這個url-pattern可以配置多個
<servlet-name>Demo1Servlet</servlet-name>
---攔截哪個名字的Servlet 可以配置多個
<dispatcher>REQUEST</dispatcher>
--- 配置攔截哪種類型的對資源的訪問,可選的值有REQUESTFORWARD INCLUDE ERROR,如果不配置默認只攔截REQUEST方式,如果具體配置了就攔截具體配置的方式的對資源的訪問,此標簽可以配置多個
</filter-mapping>
簡單點說就是需要配置<filter>和<filter-mapper>標簽,filter標簽里<filter-name>、<filter-class>是必須要的,filtermapper中<filter-name>、<url-pattern>是必須要的,其他標簽都是可選的
Ⅳ J2EE開發中的過濾器和攔截器有相同和不同點
攔截器是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法
比如動態代理就是攔截器的簡單實現,
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
Object result = null;
System.out.println("before invoke method :" + method.getName());
result = method.invoke(this.targetObj, args);
System.out.println("after invoke method : " + method.getName());
return result;
}
在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,
甚至在你拋出異常的時候做業務邏輯的操作。
過濾器是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者struts的action前統一設置字元集,或者去除掉一些非法字元(聊天室經常用到的,一些罵人的話).
Ⅳ J2EE項目中文亂碼,真的無解了
請檢查一下資料庫的編碼和表的編碼,甚至文本欄位的編碼是否都是UTF-8
Ⅵ j2ee,使用utf-8編碼,怎麼避免亂碼
所有的字元全設成UTF-8
Tomcat下的解決方法(我試過可行)
解決方式1
在conf/server.xml中的Connector節點添加屬性
URIEncoding=「UTF-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true"/>
解決方式2
同樣的專地方屬,但使用這個屬性useBodyEncodingForURI="true"
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true"/>
Ⅶ java項目和web項目中的過濾器文件怎麼使用
過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。在這之後,過濾器可以作如下的選擇:
1. 以常規的方式調用資源(即,調用servlet或JSP頁面)。
2.利用修改過的請求信息調用資源。
3. 調用資源,但在發送響應到客戶機前對其進行修改
4. 阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。
1. 建立基本過濾器
建立一個過濾器涉及下列五個步驟:
1)建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。
doFilter方法包含主要的過濾代碼(見第2步),init方法建立設置操作,而destroy方法進行清楚。
2)在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。
3)調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
4)對相應的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。
5)禁用激活器servlet。防止用戶利用預設servlet URL繞過過濾器設置。
1.1 建立一個實現Filter介面的類
所有過濾器都必須實現javax.servlet.Filter。這個介麵包含三個方法,分別為doFilter、init和destroy。
public void doFilter(ServletRequset request,
ServletResponse response,
FilterChain chain)
thows ServletException, IOException
每當調用一個過濾器(即,每次請求與此過濾器相關的servlet或JSP頁面)時,就執行其doFilter方法。正是這個方法包含了大部分過濾邏輯。第一個參數為與傳入請求有關的ServletRequest。對於簡單的過濾器,大多數過濾邏輯是基於這個對象的。如果處理HTTP請求,並且需要訪問諸如getHeader或getCookies等在ServletRequest中無法得到的方法,就要把此對象構造成HttpServletRequest。
第二個參數為ServletResponse。除了在兩個情形下要使用它以外,通常忽略這個參數。首先,如果希望完全阻塞對相關servlet或JSP頁面的訪問。可調用response.getWriter並直接發送一個響應到客戶機。其次,如果希望修改相關的servlet或JSP頁面的輸出,可把響應包含在一個收集所有發送到它的輸出的對象中。然後,在調用serlvet或JSP頁面後,過濾器可檢查輸出,如果合適就修改它,之後發送到客戶機。
DoFilter的最後一個參數為FilterChain對象。對此對象調用doFilter以激活與servlet或JSP頁面相關的下一個過濾器。如果沒有另一個相關的過濾器,則對doFilter的調用激活servlet或JSP本身。
public void init(FilterConfig config) thows ServletException
init方法只在此過濾器第一次初始化時執行,不是每次調用過濾器都執行它。對於簡單的過濾器,可提供此方法的一個空體,但有兩個原因需要使用init。首先,FilterConfig對象提供對servlet環境及web.xml文件中指派的過濾器名的訪問。因此,普遍的辦法是利用init將FilterConfig對象存放在一個欄位中,以便doFilter方法能夠訪問servlet環境或過濾器名.其次,FilterConfig對象具有一個getInitParameter方法,它能夠訪問部署描述符文件(web.xml)中分配的過濾器初始化參數。
public void destroy( )
大多數過濾器簡單地為此方法提供一個空體,不過,可利用它來完成諸如關閉過濾器使用的文件或資料庫連接池等清除任務。
1.2 將過濾行為放入doFilter方法
doFilter方法為大多數過濾器地關鍵部分。每當調用一個過濾器時,都要執行doFilter。對於大多數過濾器來說,doFilter執行的步驟是基於傳入的信息的。因此,可能要利用作為doFilter的第一個參數提供的ServletRequest。這個對象常常構造為HttpServletRequest類型,以提供對該類的更特殊方法的訪問。
1.3 調用FilterChain對象的doFilter方法
Filter介面的doFilter方法以一個FilterChain對象作為它的第三個參數。在調用該對象的doFilter方法時,激活下一個相關的過濾器。這個過程一般持續到鏈中最後一個過濾器為止。在最後一個過濾器調用其FilterChain對象的doFilter方法時,激活servlet或頁面自身。
但是,鏈中的任意過濾器都可以通過不調用其FilterChain的doFilter方法中斷這個過程。在這樣的情況下,不再調用JSP頁面的serlvet,並且中斷此調用過程的過濾器負責將輸出提供給客戶機。
1.4 對適當的servlet和JSP頁面注冊過濾器
部署描述符文件的2.3版本引入了兩個用於過濾器的元素,分別是:filter和filter-mapping。filter元素向系統注冊一個過濾對象,filter-mapping元素指定該過濾對象所應用的URL。
下面是一個完整的例子:
//建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。
//doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清
package filterpkg;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class testFilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException
{
}
//在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。
//此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。
//第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。
//最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain)
{
PrintWriter wout=null;
try
{
wout=response.getWriter();
}
catch(IOException e)
{
}
HttpServletRequest req=(HttpServletRequest)request;//將request轉化為它的子類HttpServletRequest
String uri=req.getRequestURI();//獲得傳入的URI
if (uri.indexOf("MyJsp.jsp")>0 ||uri.indexOf("MainForm.do")>0 )//如果是我們指定的登錄頁面或驗證頁面
{
try
{
//調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。
//在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
return;
}
if (req.getSession()!=null)
if (req.getSession().getAttribute("USERID")==null)
{
wout.write("<HTML><BODY> Check error! <br/> </BODY> </HTML>");
wout.flush();
return;
}
try
{
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
}
public void destroy()
{
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>CHECKCODE</filter-name>
<filter-class>filterpkg.testFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CHECKCODE</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ControlServlet</servlet-name>
<servlet-class>filterpkg.ControlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
Ⅷ j2ee中關於過濾器得用法
選建個過濾器的類..比如我的轉編碼過濾器
再在web-inf目錄打開web.xml 加入你過濾器的配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.ypage.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再在過濾器中寫如下 方法, 當用doPost方法提交時就會被過濾器捕獲了.
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
req.setCharacterEncoding("UTF-8");
res.setCharacterEncoding("UTF-8");
chain.doFilter(req, res);
}
Ⅸ Ubuntu14.04安裝eclipse j2ee版,菜單欄亂碼,求解決!
把Windows下的工程導入到了Linux下Eclipse中,由於以前的工程代碼,都是GBK編碼的(Windows下的Eclipse 默認會去讀取系統的編碼,所以Widnwos下的Eclipse的編碼為GBK),而Ubuntu默認是不支持GBK編碼的。所以,首先我們要先讓 Ubuntu支持GBK,方法如下:
首先要修改/var/lib/locales/supported.d這個文件夾的許可權,否則不能修改該文件夾下的local文件,使用如下命令 sudo chmod -R 777 /var/lib/locales/supported.d
修改/var/lib/locales/supported.d/local文件,在文件中添加
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
sudo dpkg-reconfigure --force locales
然後在輸出的結果中會出現
zh_CN.GB2312 done
zh_CN.GBK done如下所示:
這樣, Ubuntu就支持GBK編碼了, 下面開始設置eclipse,
首先選擇eclipse菜單欄中的Windows->Preferences, 然後選擇General下面的Workspace, Text file encoding下選擇Other GBK,如果沒有GBK的選項, 沒關系, 直接輸入GBK三個字母, Apply, GBK編碼的中文, 已經不是亂碼了。
Ⅹ filezilla里怎麼解決中文亂碼問題
1、首來先打開FileZilla軟體進入到軟源件主窗口後,連接FTP站點。