Don Nalaka
Don Nalaka

Reputation: 139

How to build a Simple search page using Spring MVC?

I have created webapp using Spring MVC and i have done the CRUD operations and now stuck with the search page.

I have already have coded below jsp and the controller.

JSP page body

<div align="center">
        <h1>Search Items</h1>


        <form action="search_1" method="get" modelAttribute="search">
        <table>
        <tr>
            <td>Category:</td>
            <td>
          <select  type="text" name="category_id">
            <option value="Book">Book</option>
            <option value="Audio Books">Audio Books</option>
            <option value="Videos">Videos</option>
            <option value="Music">Music</option>
          </select>
             </td>
        </tr>

        <tr>
            <td>Publisher ID:</td>
            <td>
          <select  type="text" name="publisher_id">
            <option value="Harper Collins">Harper Collins</option>
            <option value="Penguins">Penguins</option>
            <option value="Franciscan Media">Franciscan Media</option>
            <option value="Orbis">Orbis</option>
          </select>
             </td>
        </tr>

        <tr>
            <td>Price Range:</td>
            <td>Min: <input type="text" name="price_1"/> Max: 
            <input type="text" name="price_2"/></td>
        </tr>


        <tr>
                <td colspan="2" align="center"><input type="submit" value="search"></td>
            </tr>

        </table>


        </form>


    </div>

Controller

 @RequestMapping(value ="/search_1",method = RequestMethod.GET)
    public ModelAndView search_1(HttpServletRequest request, HttpServletResponse response) {

        String category_id = request.getParameter("category_id");
        String publisher_id = request.getParameter("publisher_id");
        int price = Integer.parseInt(request.getParameter("price"));



        ModelAndView model = new ModelAndView();
        model.setViewName("searchResult");


        return model;
    }

Items bean

package com.jwt.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "items")
public class Items implements Serializable {

    private static final long serialVersionUID = -3465813074586302847L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column
    private String ISBN;

    @Column
    private String title;

    @Column
    private String category_id;

    @Column
    private String Author;


    @Column
    private String publisher_id;

    @Column
    private float price;

    @Column
    private int stock;

    @Column
    private int photo_id;



    public int getid() {
        return id;
    }

    public void setid(int id) {
        this.id = id;

    }

    public String getISBN() {
        return ISBN;
    }

    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    public String gettitle() {
        return title;
    }

    public void settitle(String title) {
        this.title = title;
    }

    public String getcategory_id() {
        return category_id;
    }

    public void setcategory_id( String category_id) {
        this.category_id = category_id;
    }

    public String getAuthor() {
        return Author;
    }

    public void setAuthor(String Author) {
        this.Author = Author;
    }

  public String getpublisher_id() {
        return publisher_id;
    }

    public void setpublisher_id(String publisher_id) {
        this.publisher_id = publisher_id;
    }


     public float getprice() {
        return price;
    }

    public void setprice(float price) {
        this.price = price;
    }

     public int getstock() {
        return stock;
    }

    public void setstock(int stock) {
        this.stock = stock;
    }


     public int getphoto_id() {
        return photo_id;
    }

    public void setphoto_id(int photo_id) {
        this.photo_id = photo_id;
    }
}

The search has to be done as per the search criteria on the JSP page. The results view can be on the same page. It really doesn't matter,

Upvotes: 0

Views: 386

Answers (1)

saifulislampi
saifulislampi

Reputation: 136

I am not sure why are you confused, but let's see if I can help.

In your controller, you have to extract all of the criteria correctly then retrieve the list of items using these criteria from your database. Create a method in a service class that takes these criteria as parameter and returns a list of items. Attached that item in model and display in "searchResult.jsp" page.

Here is a rough controller method that should handle your search

    @RequestMapping(value = "/search_1", method = RequestMethod.GET)
    public ModelAndView search(HttpServletRequest request) {

        String categoryId = request.getParameter("category_id");
        String publisherId = request.getParameter("publisher_id");
        int minPrice = Integer.parseInt(request.getParameter("price_1"));
        int maxPrice = Integer.parseInt(request.getParameter("price_2"));

        List<Item> items = someService.getItems(categoryId, publisherId, minPrice, maxPrice);

        ModelAndView model = new ModelAndView();
        model.addObject("items", items);
        model.setViewName("searchResult");

        return model;
    }

Upvotes: 1

Related Questions