1. 程式人生 > >java web給手機端寫介面HttpServletRequest ,HttpServletResponse

java web給手機端寫介面HttpServletRequest ,HttpServletResponse

前言:
作為一名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可以換成其他的字串不過你要知其意思並且要和手機一直才能收到。