顯示具有 Servler 標籤的文章。 顯示所有文章
顯示具有 Servler 標籤的文章。 顯示所有文章

2017年1月14日 星期六

JAVA-JSP 頁面資料利用 Ajax 傳送至 Controller

How send data to controller by ajax ?
如果在做網頁開發時
我們一定聽過 Ajax 這好用的工具
更是前後端保持暢通的橋樑

但是我們要如何將資料整理後並將資料傳送至 Controller

首先 , 使用的方法有 :
1 . 傳統字串資料傳送
2 . JSON

一 . 傳統字串資料傳送

先在 Jsp 內匯入 JQuery 套件
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

並且在 Ajax 的 data 放置參數
格式為 :
"key1=value1&key2=value2......"
中間分隔用 & 串接

$.ajax({
    type : "post",
    url : "http://localhost:8080/MyProject/query",
    data: "id=1969&name=John", // 資料是用 & 做串接
    success : function(response) {
        alert('Success');
    },
    error : function() {
        alert('fail');
    }
});

最後在 HelloController.java 接收從 Jsp 傳來的參數
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping(value = "/query") // 對應的連結
    @ResponseBody // 有回應
    public String query(@RequestParam(value="id") Integer id, 
                        @RequestParam(value="name") String name) {
        // 上方欄位說明
        // RequestParam 代表回應的參數
        // value 代表對應的 Key
        // 最後宣告參數型別

        System.out.println("query");
        System.out.println("" + id);  
        System.out.println("" + name);  
        return "searchUser";
    }
    
}

結果如下 :

query
1969
John


參考資料:Spring mvc系列六之 ajax运用(基于json格式)
參考資料:SpringMVC注解@RequestParam全面解析
參考資料:jQuery send string as POST parameters
參考資料:Ajax传值与接收值
歡迎轉載 , 請註明出處 . 

2017年1月2日 星期一

JSP-JSTL 與 JSP 與 Servlet 結合

JDBC 其實有一點像是 EL

首先下載 JSTL.jar 放在 Project/WebContent/WEB-INF/lib 底下

接下來在新增一個繼承 HttpServlet 的 Class
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloEveryone")
public class HelloEveryone extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 字串
        String strData = "這是字串資料第一筆";
        // List
        List<String> listData = new ArrayList<String>();
        listData.add("這是List第一筆數");
        listData.add("這是List第二筆數");
        listData.add("這是List第三筆數");
        // Map
        Map<String, String> mapData = new HashMap<String, String>();
        mapData.put("First", "這是Map第一筆");
        mapData.put("Second", "這是Map第二筆");

        request.setAttribute("Date_1", strData);
        request.setAttribute("Date_2", listData);
        request.setAttribute("Date_3", mapData);

        String uri = "/jsp/HelloEveryone.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(uri);
        dispatcher.forward(request, response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse respone)
            throws ServletException, IOException {
        super.doPost(request, respone);
    }

}

在使用 JSTL 時候
一定要先宣告標籤
不然一定會出現錯誤訊息
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- 字串資料 -->
    <c:out value="${requestScope.Date_1}"></c:out>
    <br>
    <br>
    <!-- List 資料 items是對應的資料來源,var是來源內的參數 -->
    <c:forEach items="${requestScope.Date_2}" var="listData_2">
        <c:out value="${listData_2}"></c:out><br>
    </c:forEach>
    <br>
    <br>
    <!-- Map 資料 -->
    <c:forEach items="${requestScope.Date_3}" var="mapData_3">
        <c:out value="${mapData_3.key}"></c:out> : <c:out value="${mapData_3.value}"></c:out><br>
    </c:forEach>
</body>
</html>


參考資料 :jsp与html的区别
參考資料 :Attribute
歡迎轉載,請註明出處.

2017年1月1日 星期日

JAVA-Servlet 常用註解說明

WebServlet Annotation 提供更方便的功能
只要在程式的開頭添加屬性
就能得到對應的功能

注意 :
( O )@WebServlet
( X )@WebService

參考資料 : WebServlet annotation examples
參考資料 : 使用web.xml

2016年12月17日 星期六

JAVA-Servlet 常用的方法

此篇整理較常用到的方法
Request常用方法


客戶端連線資訊
編號Method說明
1getRequestURL客戶端發出請求完整的 URL
2getRequestURI客戶端發出請求的資源路徑
3getQueryString客戶端發出的參數資源
4getMethod客戶端請求的方式
5getRemoteAddr
6getRemoteHost
7getRemotePort
8getLocalAddr
9getLocalName


客戶端請求的開頭
編號Method說明
1getHead取得開頭特定參數
2getHeaders取得開頭所有參數
3getHeaderNames取得所有開頭名稱


客戶端請求的參數
編號Method說明
1getParameter取得特定名稱參數
2getParameterValues取得特定名稱參數( 複選表單/框)
3getParameterNames
4getParameterMap

參考資料 : HttpServletRequest、request常用方法

2016年7月4日 星期一

JSP、Servlet-JSP 與 Servlet 結合

為什麼我們不用 Html 就好
則要用 Jsp ??
最主要是我們直接用簡短的程式來完成一大段的功能
有點像是把資料傳給 Jsp 之後收到參數
再把整個頁面轉成 Html 格式

Servlet 3.0 新增使用註解的方式設定
省掉要在 Web.xml 設定的動作
我們直接來說明和操作吧 !


























1 . Index.java
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 網址
@WebServlet("/index")
public class Index extends HttpServlet{

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request
            , HttpServletResponse response)
            throws IOException, ServletException {
        
        // 內容    
        RequestDispatcher dispatcher = getServletContext()
                .getRequestDispatcher("/WEB-INF/jsp/index.jsp");
        dispatcher.forward(request, response);
        
    }
 
    public void doPost(HttpServletRequest request
            , HttpServletResponse response)
            throws IOException {
 
    }
    
}

2 . index.jsp
<%@ page language="java" contentType="text/html; charset=BIG5"
    pageEncoding="BIG5"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
</head>
<body>
    Hello World !!!
</body>
</html>


參考資料 : How to redirect to JSP inside WEB-INF folder
參考資料 : Java EE 6 - Servlet 3.0 新功能 - 注解 (Annotations)
參考資料 : 網頁套版

2016年6月16日 星期四

Servlet-什麼是 Tomcat?

1 . 什麼是 Tomcat :
是 Apache 底下的專案,提供有關 Web 伺服器的管理與功能

2 . 為什麼 Tomcat 和 Servlet 有關係?
通常若只存在 Servlet ,只算是空殼,他必須要有伺服器配合
,他能發揮他的價值。


現在可以想像,您要開一家超商,裡面有店員、商品...等。
但這只是想像 !
但這只是想像 !
但這只是想像 !

尚未實作 !
尚未實作 !
尚未實作 !




















如果要實現這些,就必須要被執行
這就需要 Tomcat 來去實現

歡迎轉載,請註明出處。

下一篇 : Servlet-什麼是 Servlet?( 一 )

2016年6月15日 星期三

Servlet-什麼是 Servlet?( 二 )

上一篇 : Servlet-什麼是 Servlet?( 一 )

上一篇我們用我們生活周遭的例子在說明
這篇我們用比較正式( 嗑! 嗑! 嗑!

那我們再請上一篇的圖,再加工一下 :


















差異 : 
1 . 請求改用網址
2 . 回應改用網址或參數
3 . 使用 Tomcat 架設指定商家 ( 環境 )

再重新複習一下角色 :
1 . Browser
2 . Servler ( 此角色必須要有環境才能存活_Tomcat )


歡迎轉載,請註明出處。

Servlet-什麼是 Servlet?( 一 )

Servlet : 寫在伺服器端的程序,最主要交換式瀏覽修改數據

我相信說到這裡也是一堆人充滿著問號........( OTZ

我們先假設一個情境吧
比如現在小明在 7-11


















我們所設置的 Servlet 就比較像是店員的角色

小明對指定的位置發出請求,店員就會相對的回應
Browser 對指定的位置發出請求,Servlet 就會相對的回應

簡單的說,有問就有答。
就目前先休息一下吧 !!!

歡迎轉載,請註明出處。

下一篇 : Servlet-什麼是 Servlet?( 二 )