Created
September 11, 2012 05:15
-
-
Save kamekoopa/3696114 to your computer and use it in GitHub Desktop.
ServletとPlay2.0.3のベンチマークで使ったファイル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package controllers; | |
import play.mvc.Controller; | |
import play.mvc.Result; | |
public class Echo extends Controller { | |
public static Result echo(String mes){ | |
return ok(mes); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package jp.co.ninja.maitani.sample_servlet.servlet; | |
import java.io.IOException; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServlet; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
public class EchoServlet extends HttpServlet { | |
private static final long serialVersionUID = -7967648691027432551L; | |
@Override | |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
String mes = req.getParameter("mes"); | |
resp.getWriter().write(mes); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package models; | |
import java.sql.Connection; | |
import java.sql.PreparedStatement; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.util.LinkedList; | |
import java.util.List; | |
import org.codehaus.jackson.node.JsonNodeFactory; | |
import org.codehaus.jackson.node.ObjectNode; | |
public class Users { | |
private final Connection con; | |
public Users(Connection con){ | |
this.con = con; | |
} | |
public User findUser(int id) throws SQLException{ | |
try (PreparedStatement p = this.con.prepareStatement("select * from USERS where id = ?")) { | |
p.setInt(1, id); | |
try (ResultSet resultSet = p.executeQuery()) { | |
while(resultSet.next()){ | |
String name = resultSet.getString(2); | |
int age = resultSet.getInt(3); | |
return new User(id, name, age); | |
} | |
} | |
} | |
return null; | |
} | |
public List<User> searchUsers() throws SQLException { | |
try (PreparedStatement p = this.con.prepareStatement("select * from USERS")) { | |
try (ResultSet resultSet = p.executeQuery()) { | |
List<User> users = new LinkedList<>(); | |
while(resultSet.next()){ | |
int id = resultSet.getInt(1); | |
String name = resultSet.getString(2); | |
int age = resultSet.getInt(3); | |
users.add(new User(id, name, age)); | |
} | |
return users; | |
} | |
} | |
} | |
public static class User{ | |
private final int id; | |
private final String name; | |
private final int age; | |
private User(int id, String name, int age) { | |
super(); | |
this.id = id; | |
this.name = name; | |
this.age = age; | |
} | |
public int getId() { | |
return this.id; | |
} | |
public String getName() { | |
return this.name; | |
} | |
public int getAge() { | |
return this.age; | |
} | |
@Override | |
public String toString(){ | |
StringBuilder sb = new StringBuilder(); | |
return sb.append("id:"+this.id+" ").append("name:"+this.name+" ").append("age:"+this.age).toString(); | |
} | |
public ObjectNode toJson(){ | |
ObjectNode user = JsonNodeFactory.instance.objectNode(); | |
user.put("id" , this.id); | |
user.put("name", this.name); | |
user.put("age" , this.age); | |
return user; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package jp.co.ninja.maitani.sample_servlet.servlet; | |
import java.io.IOException; | |
import java.sql.Connection; | |
import java.sql.DriverManager; | |
import java.sql.SQLException; | |
import java.util.List; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServlet; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import jp.co.ninja.maitani.sample_servlet.models.Users; | |
import jp.co.ninja.maitani.sample_servlet.models.Users.User; | |
import org.codehaus.jackson.node.ArrayNode; | |
import org.codehaus.jackson.node.JsonNodeFactory; | |
import org.codehaus.jackson.node.ObjectNode; | |
public class UserListServlet extends HttpServlet { | |
private static final long serialVersionUID = -7967648691027432551L; | |
@Override | |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
final List<User> users; | |
try (Connection c = DriverManager.getConnection("jdbc:mysql://localhost/sample","appuser","pass")) { | |
users = new Users(c).searchUsers(); | |
} catch (SQLException e) { | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "server error"); | |
result.put("message", "sql execution failure - " + e.getMessage()); | |
resp.setStatus(500); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
} | |
if(users.isEmpty()){ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "not found"); | |
result.put("message", "user not found"); | |
resp.setStatus(404); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
}else{ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result", "found"); | |
ArrayNode userList = JsonNodeFactory.instance.arrayNode(); | |
for(User user : users){ | |
userList.add(user.toJson()); | |
} | |
result.put("users" , userList); | |
resp.setStatus(200); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package controllers; | |
import java.sql.Connection; | |
import java.sql.SQLException; | |
import java.util.List; | |
import java.util.Random; | |
import models.Users.User; | |
import org.codehaus.jackson.node.ArrayNode; | |
import org.codehaus.jackson.node.JsonNodeFactory; | |
import org.codehaus.jackson.node.ObjectNode; | |
import play.db.DB; | |
import play.mvc.Controller; | |
import play.mvc.Result; | |
public class Users extends Controller { | |
public static Result index() { | |
Random random = new Random(); | |
final int id = random.nextInt(10) + 1; | |
final User user; | |
try (Connection c = DB.getConnection()) { | |
user = new models.Users(c).findUser(id); | |
}catch (SQLException e) { | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "server error"); | |
result.put("message", "sql execution failure - " + e.getMessage()); | |
return internalServerError(result); | |
} | |
if(user == null){ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "not found"); | |
result.put("message", "specified id["+id+"] not found"); | |
return notFound(result); | |
}else{ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result", "found"); | |
result.put("user" , user.toJson()); | |
return ok(result); | |
} | |
} | |
public static Result list() { | |
final List<models.Users.User> users; | |
try (Connection c = DB.getConnection()) { | |
users = new models.Users(c).searchUsers(); | |
}catch (SQLException e) { | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "server error"); | |
result.put("message", "sql execution failure - " + e.getMessage()); | |
return internalServerError(result); | |
} | |
if(users.isEmpty()){ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "not found"); | |
result.put("message", "user not found"); | |
return notFound(result); | |
}else{ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result", "found"); | |
ArrayNode userList = JsonNodeFactory.instance.arrayNode(); | |
for(models.Users.User user : users){ | |
userList.add(user.toJson()); | |
} | |
result.put("users" , userList); | |
return ok(result); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package jp.co.ninja.maitani.sample_servlet.servlet; | |
import java.io.IOException; | |
import java.sql.Connection; | |
import java.sql.DriverManager; | |
import java.sql.SQLException; | |
import java.util.Random; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServlet; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import jp.co.ninja.maitani.sample_servlet.models.Users; | |
import jp.co.ninja.maitani.sample_servlet.models.Users.User; | |
import org.codehaus.jackson.node.JsonNodeFactory; | |
import org.codehaus.jackson.node.ObjectNode; | |
public class UsersServlet extends HttpServlet { | |
private static final long serialVersionUID = -7967648691027432551L; | |
@Override | |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
Random random = new Random(); | |
int id = random.nextInt(10) + 1; | |
final User user; | |
try (Connection c = DriverManager.getConnection("jdbc:mysql://localhost/sample","appuser","pass")) { | |
user = new Users(c).findUser(id); | |
} catch (SQLException e) { | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "server error"); | |
result.put("message", "sql execution failure - " + e.getMessage()); | |
resp.setStatus(500); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
} | |
if(user == null){ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result" , "not found"); | |
result.put("message", "specified id["+id+"] not found"); | |
resp.setStatus(404); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
}else{ | |
ObjectNode result = JsonNodeFactory.instance.objectNode(); | |
result.put("result", "found"); | |
result.put("user" , user.toJson()); | |
resp.setStatus(200); | |
resp.setContentType("application/json"); | |
resp.getWriter().write(result.toString()); | |
return; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment