jsp實(shí)現(xiàn)java后臺(tái)接口功能

由于工作需要,無(wú)法接觸到項(xiàng)目的后臺(tái)代碼,所以需要在jsp頁(yè)面實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù)的功能,然后實(shí)現(xiàn)頁(yè)面的展示。

思路

實(shí)現(xiàn)兩個(gè)jsp頁(yè)面,第一個(gè)頁(yè)面實(shí)現(xiàn)java的接口功能,即訪問(wèn)數(shù)據(jù)庫(kù)并以json格式返回給前端,另一個(gè)頁(yè)面其實(shí)就是純前端的頁(yè)面,用于展示信息。其實(shí)jsp本質(zhì)上也就是servlet,可以直接在jsp里面寫(xiě)java代碼,完全可以當(dāng)做是java來(lái)使用。

jsp后臺(tái)

  1. 在jsp里使用"<%! %>"標(biāo)簽可以用于聲明類,這里我用來(lái)聲明一個(gè)類HomeMessage,該類的成員變量其實(shí)就對(duì)應(yīng)了數(shù)據(jù)庫(kù)的表的列。
<%!
public class HomeMessage {
    
    private String name;// 姓名
    private String email; //郵箱
    private String mobile;//手機(jī)號(hào)碼
    private String home;
}
%>
這里省略了變量對(duì)應(yīng)的get方法和set方法
  1. 在jsp中使用"<% %>"便簽可以寫(xiě)java代碼,我在這里面實(shí)現(xiàn)了利用jdbc訪問(wèn)數(shù)據(jù)庫(kù),并返回?cái)?shù)據(jù)庫(kù)的信息,然后利用mysql的limit功能來(lái)實(shí)現(xiàn)簡(jiǎn)單的分頁(yè),最后構(gòu)造json,返回給前端。
<%
        //注冊(cè)mysql驅(qū)動(dòng)
        Class.forName("com.mysql.jdbc.Driver");
        //mysql的URL
        String url="jdbc:mysql://localhost:3306/city";
        String user="root";
        String password="root";
        Connection conn = DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();
        String pageSize = request.getParameter("pageSize");
        String pageIndex = request.getParameter("pageIndex");
        String sql = "SELECT * FROM home_message limit " + (Integer.parseInt( pageIndex ) - 1) * 3 + ",3";  
        String allNumSql = "SELECT count(*) FROM home_message";
        ResultSet rs = stmt.executeQuery(sql);
        //查詢條數(shù)
        List<HomeMessage> list = new ArrayList<HomeMessage>();
        while(rs.next()){
            HomeMessage change = new HomeMessage();
            change.setName( rs.getString("name") );
            change.setHome( rs.getString("home") );
            change.setEmail( rs.getString("email") );
            change.setMobile( rs.getString("mobile"));
            list.add(change);
        }
        //總記錄數(shù)
        Statement allNumStmt = conn.createStatement();
        ResultSet allNumSet = allNumStmt.executeQuery( allNumSql );
        int allNumCount = 0;
        while(allNumSet.next()){
            allNumCount = allNumSet.getInt(1);
        }
        //構(gòu)造json
        Map<String,Object> map = new HashMap<String, Object>();
        map.put( "list", list );
        map.put( "pageCount", allNumCount / Integer.parseInt( pageSize ) );
        String jsonStr = JSONObject.toJSONString( map );
        response.setContentType( "text/json" );
        PrintWriter writer = response.getWriter();
        writer.write( jsonStr );
        writer.flush();
        writer.close();
        //關(guān)閉
        conn.close();
        stmt.close();
        allNumStmt.close();
        rs.close();
        allNumSet.close();
    %>

jsp前端

jsp前端其實(shí)就是普通的前端代碼,獲取到信息后展示在頁(yè)面上即可。詳情請(qǐng)查看(https://github.com/wumingzhizhu/nutz-test/tree/master/src/main/webapp/view)地址,其中show.jsp就是前端頁(yè)面,showAjax.jsp就是后臺(tái)頁(yè)面。對(duì)于分頁(yè)的插件以及前端的技術(shù),請(qǐng)參考另外一篇文章"angularjs+bootstrap自定義分頁(yè)(http://www.itdecent.cn/p/c39430338e5f)"。

效果圖

image.png

注意事項(xiàng)

  1. 在jsp寫(xiě)java后臺(tái)代碼的時(shí)候,需要使用例如(<%@ page import="javax.sql.DataSource" %>)這種方式來(lái)引進(jìn)java對(duì)應(yīng)的包,這里除了用到了jdk的包之外,還用到了fastjson,這個(gè)主要用于構(gòu)造json格式的數(shù)據(jù)的,如果是maven工程,可以直接在pom.xml文件引入fastjson。
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.28</version>
        </dependency>
</dependencies>
image.png
  1. 這里主要是利用jdbc來(lái)訪問(wèn)mysql數(shù)據(jù)庫(kù),因此需要有mysql的驅(qū)動(dòng),如果該web項(xiàng)目是tomcat啟動(dòng)的,可以直接在tomcat的lib目錄放一個(gè)mysql的驅(qū)動(dòng)包即可,或者直接放在web項(xiàng)目的lib目錄里面。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,652評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評(píng)論 0 11
  • 一直對(duì)雨無(wú)感,感到麻煩的是積水弄濕了鞋,無(wú)論什么鞋,都會(huì)濕。 下雨天總是粘膩的,因?yàn)榭諝饫锏乃肿幼兌?,身體也變得...
    祝福__閱讀 718評(píng)論 0 2
  • Xcode運(yùn)行出現(xiàn)the file “XXX” could not be opened because you d...
    480a52903ce5閱讀 1,451評(píng)論 0 2
  • 簡(jiǎn)書(shū)用戶群體越來(lái)越龐大,各大前端專題文章的更新根本停不下來(lái),一步一步像爪牙,像魔鬼的步伐~~好文稍縱即逝,何不抓住...
    小蟲(chóng)巨蟹閱讀 348評(píng)論 1 3

友情鏈接更多精彩內(nèi)容