編輯:關於Android編程
本節講解決中文亂碼問題的4種方法。
還有更好的方法,也就是用過濾器,這裡就不演示了,博主目前也不會~呼?(^?^*)~過段時間才會學。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
FirstServlet.java:
package cn.hncu.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FirstServlet implements Servlet{
//只有第一次訪問才會被執行一次,最先執行一次!
public FirstServlet() {
System.out.println("1 構造方法被執行..."+this);
}
//關閉Tomcat服務器時會執行一次。如果是通過myeclipse關閉的,是不會執行的,因為是直接關閉了java虛擬機。
//最後執行一次
@Override
public void destroy() {
System.out.println("4 destroy..."+this);
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
//第一次被訪問才執行,在構造方法之後執行一次!
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("2 init..."+this);
String name = config.getInitParameter("name");
System.out.println("name:"+name);
}
//每次訪問都執行,(第一次)init()後執行
@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
System.out.println("333 servlet"+this);
}
}
web.xml:
index.jsp
firstServlet
cn.hncu.servlet.FirstServlet
name
Jack
firstServlet
/first
配置需要初始化的參數:
name
Jack
在servlet中:
用config.getInitParameter(“name”);去得到name參數的值。
演示結果:
我們點擊訪問:訪問FirstServlet
看後台的輸出信息:
不關閉服務器再去訪問:
用myeclipse關閉服務器-因為是直接關閉了java虛擬機,所以不會再運行destroy()方法。也就沒有再輸出。
用Tomcat的shutdown.bat關閉服務器:
解決中文亂碼問題
index.jsp中增加:
以下演示用戶登錄
web.xml增加的代碼:
login
cn.hncu.servlet.LoginServlet
login
/login
LoginServlet.java:
package cn.hncu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class LoginServlet implements Servlet{
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
private String charset = null;
@Override
public void init(ServletConfig config) throws ServletException {
//法四:
charset = config.getInitParameter("character");
}
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
//解決中文亂碼問題
//前提:前台頁面必須以post方式提交中文---因為post會設置http協議頭"Content-Type = application/x-www-form-urlencoded",
//這樣Tomcat才知道這是編碼的字符數據
//法一:在Tomcat的server.xml中的中添加一個屬性:URLEncoding="utf-8"
//!!!法一是不可取的,因為Tomcat是公共平台,這個項目只是其中的一個項目,
//不能把平台看成私有的即最好不要去修改,否則其他項目可能會出現問題
//法二:把Tomcat解錯的碼還原回來
//這個方法還行,但如果前台傳輸的很多參數都是中文,那麼我們要對每個參數都要進行這樣還原,顯然比較麻煩。
//還有,如果以後要改編碼,就得改源代碼,對客戶來說比較麻煩。對程序員也一樣
//String name = req.getParameter("name");
//byte bs[] = name.getBytes("iso8859-1");
//name = new String(bs,"utf-8");
//System.out.println(name);
//法三:這種解決方式是比較好的,但有一個缺點:如果以後要改編碼,就得改源代碼,對客戶來說比較麻煩。對程序員也一樣
//req.setCharacterEncoding("utf-8");
//String name = req.getParameter("name");
//法四:其實是在web.xml中把編碼設置成參數,然後在這裡讀取出來,利用“法2”進行設置。以後如果要更改編碼,只要更改web.xml中的相應參數設置就OK了
req.setCharacterEncoding(charset);
String name = req.getParameter("name");
String pwd = req.getParameter("pwd");
//用name和pwd到後台去訪問數據庫,以驗證該用戶信息是否正確(登錄是否成功)
//本例不是講解這個,所以省略。
res.setContentType("text/html;charset=utf-8");//告訴浏覽器,我下面發的內容是什麼格式的東西,什麼編碼的
String html = "name:"+name+
"
pwd:"+pwd+
"";
PrintWriter out = res.getWriter();
out.write(html);
//*******另外一個小知識點:
//Tomcat項目運行時,加載jar包或類文件的順序:TOMCAT_HOME\lib --> webapps\項目名\WEB-INF\lib --> webapps\項目名\WEB-INF\classes目錄下面的類
//後加載的會覆蓋前面的---即後加載有效-和java相反(父類加載機制)
}
}
有2個小知識點:
1:
Tomcat項目運行時,加載jar包或類文件的順序:TOMCAT_HOME\lib –> webapps\項目名\WEB-INF\lib –> webapps\項目名\WEB-INF\classes目錄下面的類
後加載的會覆蓋前面的—即後加載有效-和java相反(父類加載機制)
2:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMiBpZD0="演示結果-1">加這個的位置是web.xml中,
演示結果:
一開始未寫解決中文亂碼時的演示結果:
後台顯示:
用中文亂碼解決時(不把每一種方法的結果都演示出來了)
由於項目需要,所以用SurfaceView寫了一個自定義View,根據曉風飛雨的溫度計源碼做了一部分修改而來,效果是雙汞柱 不廢話了 先上源碼package view;i
我們在ListView中需要下載資源時,贊不考慮緩存機制,那麼每一個Item可能都需要開啟一個線程去下載資源(如果沒有線程池),如果Item很多,那麼我們可能就會無限制的
概況 Android在4.3的版本中(即API 18)加入了NotificationListenerService,根據SDK的描述(AndroidDev
高效計算——RenderScriptRenderScript是安卓平台上很受谷歌推薦的一個高效計算平台,它能夠自動把計算任務分配到各個可用的計算核