Tuesday, July 29, 2008

Simple MVC example


Models = pojo
create class models.BeerExpert

public class BeerExpert {
public List getBrands(String color){
List brands = new ArrayList();
if(color.equals("amber")){
brands.add("Jack Amber");
brands.add("Red Moose");
}
else {
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
return(brands);
}
}


Views = jsp
[First path] this is first page see when run. create index.jsp like this.

<html>
<head>
<title>JSP Page</title>
</head>
<body>
<form action="BeerExpertServlet.do">
<select name="color" size="1">
<option>light
<option>amber
<option>brown
<option>dark
</select>
<center>
<input type="submit">
</center>
</form>
</body>
</html>


[Second Path] show result foward from controls. create beerexpertresult.jsp

<html>
<head>
<title>JSP Page</title>
</head>
<body>
<h1>Beer Recommedations JSP</h1>
<%
java.util.List styles = (java.util.List)request.getAttribute("styles");
java.util.Iterator it = styles.iterator();
while(it.hasNext()){
out.println("<br>try:"+it.next());
}
%>
</body>
</html>



Controls = servlet
create class controls.BeerExpertServlet

public class BeerExpertServlet extends HttpServlet {

/**
* Processes requests for both HTTP GET and POST methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);

request.setAttribute("styles", result);
RequestDispatcher view =
request.getRequestDispatcher("beerexpertresult.jsp");
view.forward(request, response);

} finally {
out.close();
}
}

//
/**
* Handles the HTTP GET method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP POST method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}


and you must edit web.xml like this



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>
<servlet-name>BeerExpertServlet</servlet-name>
<servlet-class>controls.BeerExpertServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BeerExpertServlet</servlet-name>
<url-pattern>/BeerExpertServlet.do</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>



step just like this index.jsp(view)->BeerExpertServlet.java(controls)->beerexpertresult.jsp(view)