標籤:
前言:
作為一名android開發人員,網路資料都是web開發人員提供,每次讓他們寫一個介面都跟求神拜佛一樣,與其求別人還不如自己動手,這是八百年前寫的word,今天把它記在csdn,防止以後忘記還可以看看。
1.介面的資料來源來自於資料庫。(這裡沒辦法提供方法教你怎麼查資料,自己去網站上學吧,我覺得挺不錯的)
http://www.w3school.com.cn/sql/sql_wildcards.asp
2.我所寫介面的架構是structs+spring+ibatis,要會介面首先要學會這三個架構怎麼用。下面是myecplise開發的web項目結構圖張這樣:
我們有個大概的瞭解了,之後你建立一個Javaweb項目都會有個web.xml,這個是入口,我們來看看它裡面有啥:
web.xml中的東西我沒辦法講述的很清楚,待會兒附上源碼,公司人說每次建立項目的時候直接複製一下改改就好了,這大概就是通病一是比較懶,而是一個個敲麻煩還要全懂。
3.先說介面,順序好像反了,這是以登陸為例:
BaseAction類繼承ActionSupport類(xwork.jar),我們在BaseAction類寫了一些基本的輸出方法,就是手機端不是向web請求嘛,web響應後要給手機東西,就好比我登陸的時候給使用者名稱和密碼給web,web就去伺服器查詢是否有這號人,如果有或者沒有,web就得告訴手機端,輸出格式一般給的是json格式,這是web端的BaseAction類,這個類裡面還有HttpServletRequest(手機端傳給web的使用者名稱和密碼,web就是從這裡取出),HttpServletResponse的到他們的執行個體,以及HttpSession對象,session就是瀏覽器緩衝,比如你登陸別人的網站,別人就可以通過session吧你的帳號記錄下來。用gessession就可得到。
4,我們寫一個LoginAction繼承BaseAction,其中寫一個登陸的方法如下:
/** * @see 手機端登陸的介面 */ @Resource Loginservice loginService; //@Resource代表著引用資源 public void startLogin(){ Map<String,Object> map=new HashMap<String,Object>(); //得到請求對象 HttpServletRequest request=this.getRequest(); //拿到手機端傳給我們的username這個key所對應的的value,用map裝起來 map.put("username",request.getParameter("username")); //拿到密碼不為空白就 吧它用MD5加密用map裝起來,用MD5是為了賬戶安全,註冊的時候都是加密了存入資料庫的,簡單防止剽竊 if(StringUtils.isNotNull(request.getParameter("password"))) { String password = Md5Utils.MD5_32(request.getParameter("password")); map.put("password", password); } //在這裡就是Service去掉dao層,dao層掉ibatis(資料庫層)經過資料庫的查詢得到一個這個人的資訊,查不到返回空 String json = loginService.Loginmobile(map); JSONObject jsonobj=new JSONObject(); if(json==null){ json=""; jsonobj.put("state", "false"); jsonobj.put("msg", "登陸失敗,使用者名稱或密碼錯誤"); }else{ jsonobj.put("userinfo", json); jsonobj.put("state", "true"); jsonobj.put("msg", "登陸成功"); } //在這裡輸出,手機端就拿到web返回的值了 this.outJsonString(jsonobj.toString()); }
5.LoginService為介面,裡面定義了一系列方法,loginService為其對象,而介面中就有剛調用的Loginmobile方法名,而其方法體在LoginserviceImpl中實現,LoginserviceImpl實現LoginService介面,方法體如下:
public class LoginserviceImpl implements Loginservice{ @Resource LoginDao loginDao; //引用dao資源//方法調用LoginDao 的Loginmobile方法 public String Loginmobile(Map<String,Object> params){ return loginDao.Loginmobile(params); }
6.LoginDao 也是介面類,他的實作類別是LoginDaoImpl,LoginDao 類申明了一個Loginmobile方法名,其方法體在LoginDaoImpl中實現。具體實現為:
LoginDaoImpl類繼承AbstactTemplateDao 類()
public class LoginDaoImpl extends AbstactTemplateDao implements LoginDao { public String Loginmobile(Map<String,Object> params){ //查詢資料庫,"login.loginmobile"中,login代表ibatis中name=login的檔案,下的loginmobile方法(就是查語句,看) List<Map<String,String>> list = this.getSqlMapClientTemplate().queryForList("login.loginmobile",params); return list.toString(); }
現在知道大致的流程了吧,總結一下:
一個登陸模組我們把它劃在一個包下,不管是web還是手機登陸都放這裡,一個登陸包下分四個分支,一個action層,一個service層(商務邏輯層),一個dao層(資料庫操作層),一個Entry(實體類,對應資料庫表) ,四個層次,如:
打箭頭的代表要配置,所有的繼承Baseaction的類以及各自的service實作類別和dao的實作類別都要在各自對應的檔案中配置,比如loginaction就要在applicationContext-action中配置如下
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean name="loginAction" class="org.U9APP.login.action.LoginAction" scope="prototype"></bean></beans>
dao的實作類別也是一樣,在applicationContext-dao中註冊
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 登陸管理 --> <bean name="loginDao" class="org.U9APP.login.dao.LoginDaoImpl" /></beans>
structs也有類似的配置,而之前說的web.xml中吧spring中下的四個檔案配置了。sping中的applicationContext是用來配置ibatis的,上面有個圖畫錯了哈,最後就是你寫的介面的url是這樣拼起來的。
http:192.168.0.100:8080/loginAction/startLogin.action?username=”123”&password=”123456”
其中:
192.168.0.100你電腦ip,8080tomcat連接埠號碼,loginAction為applicationContext-action中登陸所在類class=”org.U9APP.login.action.LoginAction”它的name值,startLogin為登陸類下的剛寫的登陸方法名。action,?後為參數,usname為key,這個是web和手機對接key,123為使用者名稱,123456為密碼,這個key可以換成其他的字串不過你要知其意思並且要和手機一直才能收到。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
java web給手機端寫介面HttpServletRequest ,HttpServletResponse