• Decoded World

    The Mysteries of Humanity: Leonardo da Vinci

  • Decoded World

    The Unsung Hero: Nikola Tesla

  • Decoded World

    The Wizard of Light: Thomas Edison

  • Decoded World

    Adolf Hitler: The Master Manipulator

Showing posts with label JAVA Web Services. Show all posts
Showing posts with label JAVA Web Services. Show all posts

01 January 2017

WEB SERVICES: Restful Crud Jsp Servlet Client (Restful - Hibernate - JSP - Mysql)

Restful: Create > Read > Update > Delete > Search

=============PHẦN WEB SERVICE =============
Tạo project Test23Restful
CrudResource.java
Java Web Service 2016
package sample.restFul;

import dao.UserDao;
import entity.User;
import java.util.List;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

/**
 * REST Web Service
 *
 * @author Lonely
 */
@Path("generic")
public class CrudResource {

    @Context
    private UriInfo context;

    UserDao userDao = new UserDao();

    //http://localhost:8080/Test23Restful/webresources/generic/checkLogin?username=Antonio&password=123456
    @Path("/checkLogin")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String checkLogin(
            @QueryParam("username") String username,
            @QueryParam("password") String password) {
        boolean result = userDao.checkLogin(username, password);
        return result == true ? "true" : "false";
    }

    //http://localhost:8080/Test23Restful/webresources/generic/showUser
    @GET
    @Path("/showUser")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public List<User> findAll() {
        return userDao.findAll();
    }

    //http://localhost:8080/Test23Restful/webresources/generic/search/Antonio
    @GET
    @Path("search/{username}")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public List<User> findByName(@PathParam("username") String username) {
        return userDao.findByUsername(username);
    }

    //http://localhost:8080/Test23Restful/webresources/generic/delete?username=Antonio
    @DELETE
    @Path("/delete")
    @Produces(MediaType.APPLICATION_JSON)
    public String deleteUser(
            @QueryParam("username") String username) {
        boolean result = userDao.deleteUser(username);
        return result == true ? "true" : "false";
    }

    //http://localhost:8080/Test23Restful/webresources/generic/create?username=Antonio&password=123456
    @PUT @Path("/create")
    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public String insertUser(
            @QueryParam("username") String username,
            @QueryParam("password") String password) {
        boolean result = userDao.insertUser(new User(username, password));
        return result == true ? "true" : "false";
    }

    //http://localhost:8080/Test23Restful/webresources/generic/update?username=Antonio&password=123456789
    @POST @Path("/update")
    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public String updateUser(
            @QueryParam("username") String username,
            @QueryParam("password") String password) {
        boolean result = userDao.updateUser(new User(username, password));
        return result == true ? "true" : "false";
    }

}
Tạo Entity Database
Sau khi tạo xong Service và Entity Database 
-Các bạn tải project ở dưới cùng vào phần src coppy hibernate.cfg.xml và coppy cả package util paste và như hình dưới. 

Xong chúng ta vào phần hibernate.cfg.xml sửa lại username & password của msql
Chúng ta không cần quan tâm đến AppliactionConfig.java
Clean and build > Deploy >Run
-Tải tiện ích chrome Boomerang - SOAP & REST Client
-Add library jdbc mysql connector nếu các bạn không test được.
Run chạy Boomerang để test Service Restful
Trên đây là những hình ảnh Test Crud bằng Boomerang - SOAP & REST Client
-Tiếp theo ta đi xây dựng web client
===============PHẦN WEB CLIENT==============
New project Test23RestfulClient
-Coppy và paste vào project của bạn phần template sẵn này
-Tạo servlet: LoginServlet và CrudServlet
LoginServlet.java
Java Web Service 2016
package servlet;


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;
import javax.ws.rs.core.MultivaluedMap;
import com.sun.jersey.core.util.MultivaluedMapImpl; 
import entity.User;
import java.util.Collection;
import javax.servlet.http.HttpSession;
import javax.ws.rs.core.MediaType;

public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.getSession().invalidate();
        response.sendRedirect("login.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //===============//
        String URI = "http://localhost:8080/Test23Restful/webresources/generic";
        Client client =Client.create(); //Add jersey-client-1.19.jar
        client.setFollowRedirects(Boolean.TRUE);
        WebResource resource = client.resource(URI);
        MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); //Add jersey-core-1.19.jar
        queryParams.add("username", username);
        queryParams.add("password", password);
        //=======List=========//
        GenericType<Collection<User>> gt = new  GenericType<Collection<User>>(){};
        Collection<User> list = resource.path("showUser").queryParams(queryParams).accept(MediaType.APPLICATION_XML_TYPE).get(gt);
        //========Login========//
        String res = resource.path("checkLogin").queryParams(queryParams).get(String.class);
        boolean result = Boolean.parseBoolean(res);
        if(result){
            request.setAttribute("items", list);
            HttpSession session = request.getSession();
            session.setAttribute("USER", username);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }else{
            request.setAttribute("message", "Login fail check username or password!");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
        
    }

}

CrudServlet.java
Java Web Service 2016
package servlet;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import entity.User;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;

/**
 *
 * @author Lonely
 */
public class CrudServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String action = request.getParameter("action");

        //===============//
        String URI = "http://localhost:8080/Test23Restful/webresources/generic";
        Client client = Client.create(); //Add jersey-client-1.19.jar
        client.setFollowRedirects(Boolean.TRUE);
        WebResource resource = client.resource(URI);

        MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); //Add jersey-core-1.19.jar
        queryParams.add("username", username);
        queryParams.add("password", password);
        //=======List=========//
        GenericType<List<User>> gt = new GenericType<List<User>>() {
        };
        Collection<User> list = resource.path("showUser").queryParams(queryParams).accept(MediaType.APPLICATION_XML_TYPE).get(gt);
        //========Insert========//
        if ("Insert".equalsIgnoreCase(action)) {
            String res = resource.path("create").queryParams(queryParams).put(String.class);
            boolean result = Boolean.parseBoolean(res);
            if (result) {
                request.setAttribute("message", res);
                request.setAttribute("items", resource.path("showUser").queryParams(queryParams).accept(MediaType.APPLICATION_XML_TYPE).get(gt));
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
            request.setAttribute("message", "Insert fail");
            request.setAttribute("items", list);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } else if ("Update".equalsIgnoreCase(action)) {
            String res = resource.path("update").queryParams(queryParams).post(String.class);
            boolean result = Boolean.parseBoolean(res);
            if (result) {
                request.setAttribute("message", res);
                request.setAttribute("items", resource.path("showUser").queryParams(queryParams).accept(MediaType.APPLICATION_XML_TYPE).get(gt));
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
            request.setAttribute("message", "Insert fail");
            request.setAttribute("items", list);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } else if ("Delete".equalsIgnoreCase(action)) {
            MultivaluedMap<String, String> paramsDelete = new MultivaluedMapImpl(); //Add jersey-core-1.19.jar
            paramsDelete.add("username", username);
            String res = resource.path("delete").queryParams(paramsDelete).delete(String.class);
            boolean result = Boolean.parseBoolean(res);
            if (result) {
                request.setAttribute("message", res);
                request.setAttribute("items", resource.path("showUser").queryParams(queryParams).accept(MediaType.APPLICATION_XML_TYPE).get(gt));
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
            request.setAttribute("message", "Insert fail");
            request.setAttribute("items", list);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } else if ("search".equalsIgnoreCase(action)) {
            String pathParam = username;
            if(username.isEmpty()){pathParam="a";}
            List<User> res = resource.path("search/"+pathParam+"").accept(MediaType.APPLICATION_XML_TYPE).get(gt);
            if (res.size()>0) {
                request.setAttribute("message", "Finding");
                request.setAttribute("items", res);
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }
            request.setAttribute("message", "Find not found");
            request.setAttribute("items", list);
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }

    }

}
-Tạo entity database User
Clean and build > Deploy > Run Test23RestfulClient
Login không thành công.
Login thành công.
Search username Antonio
Insert Ewin Rommel
Update Ewin Rommel123456
Delete Ewin Rommel123456
Download zip (import Netbeans)

28 December 2016

WEB SERVICES: Restful Calculator Basic

Demo Calculator Add Subtract

=============PHẦN WEB SERVICE =============
@Path("/add")
@GET
@Produces("text/plain")
public String add(
        @DefaultValue("5") @QueryParam("num1") double num1,
        @DefaultValue("3") @QueryParam("num2") double num2) {
    double result = num1 + num2;
    return "Ket qua phep cong: " + result;
}

@Path("/subtract")
@GET
@Consumes("text/plain")
public String subtract(
        @QueryParam("num1") double num1,
        @QueryParam("num2") double num2) {
    double result = num1 + num2;
    return "Ket qua phep tru: " + result;
}
Clean and Build > Deploy > Run project Restful-001
http://localhost:8080/Restful-001/webresources/generic

http://localhost:8080/Restful-001/webresources/generic/add
http://localhost:8080/Restful-001/webresources/generic/add?num1=6&num2=8
http://localhost:8080/Restful-001/webresources/generic/subtract?num1=6&num2=8
===============PHẦN WEB CLIENT==============
Tạo trang Calculator.jsp
Calculator.jsp
Java Web Service 2016
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <form action="CalculatorServlet">
            Num1: <input type="text" name="num1" value="" /><br/>
            Num2: <input type="text" name="num2" value="" /><br/>
            <input type="submit" value="Add" name="action" />
            <input type="submit" value="Sub" name="action"/>
        </form>
    </body>
</html>
Tạo Servlet CalculatorServlet
CalculatorServlet.java
Java Web Service 2016
package servlet;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.MultivaluedMap;

/**
 *
 * @author Lonely
 */
public class CalculatorServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String action = request.getParameter("action");
        String num1 = request.getParameter("num1");
        String num2 = request.getParameter("num2");
        String uri = "http://localhost:8080/Restful-001/webresources/generic";
        
        Client client = Client.create(); //Add jersey-client-1.19.jar
        client.setFollowRedirects(Boolean.TRUE);
        WebResource resource = client.resource(uri);
        
        MultivaluedMap<String, String> params = new MultivaluedMapImpl(); //Add jersey-core-1.19.jar
        params.add("num1", num1);
        params.add("num2", num2);
        
        if ("Add".equalsIgnoreCase(action)) {
            //res hiển thị nột dung bên trong method add của server
            String res = resource.path("add").queryParams(params).get(String.class);
            out.print("Add: "+num1+" + "+num2+" "+res +" <a href="+"Calculator.jsp"+"><input type="+"button"+" value="+"Calculator"+"></a>");
        } else if ("Sub".equalsIgnoreCase(action)) {
            //res hiển thị nột dung bên trong method subtract của server
            String res = resource.path("subtract").queryParams(params).get(String.class);
            out.print("Add: "+num1+" - "+num2+" "+res +" <a href="+"Calculator.jsp"+"><input type="+"button"+" value="+"Calculator"+"></a>");
        }
    }

}
Add thư viện: 
Clean and build > Deploy > Run test Restful-001-Client

 

BACK TO TOP

Xuống cuối trang