package service.servlet;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.dao.MyOpenconnection;
import service.utils.HttpUtil;
import service.utils.JSONUtil;
import service.utils.StringUtil;
public abstract class CommonServlet extends HttpServlet
{
protected Connection mConnection;
protected String mUsername;
protected String mNickname;
protected String mPassword;
protected String mPhotoRootPath;
protected String mDiaryRootPath;
protected abstract void execute(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException;
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
try
{
mPhotoRootPath = getServletContext().getRealPath("/") + "images/";
// mPhotoRootPath = getServletContext().getInitParameter("photoRootPath");
mDiaryRootPath = getServletContext().getInitParameter("diaryRootPath");
// ���Connection����
mConnection = MyOpenconnection.getconnection();
String sql = "select * from t_kx_users where email=? and password=?";
PreparedStatement pstmt = mConnection.prepareStatement(sql);
mUsername = request.getParameter("username");
mPassword = request.getParameter("password");
if(!StringUtil.isNull(request.getParameter("nickname"))){
mNickname = new String(request.getParameter("nickname").getBytes(
"iso-8859-1"), "utf-8");
}
pstmt.setString(1, mUsername);
pstmt.setString(2, mPassword);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
{
execute(request, response);
}
else
{
response.getWriter().println("Unauthorized Access.");
}
}
catch (Exception e)
{
response.getWriter().println(e.getMessage());
MyOpenconnection.closeConnection(mConnection);
}finally{
MyOpenconnection.closeConnection(mConnection);
}
}
public void scaleImage(InputStream imgInputStream,
OutputStream imgOutputStream, int scale)
{
try
{
Image src = javax.imageio.ImageIO.read(imgInputStream);
int width = (int) (src.getWidth(null) * scale / 100.0);
int height = (int) (src.getHeight(null) * scale / 100.0);
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(
src.getScaledInstance(width, height, Image.SCALE_SMOOTH),
0, 0, null);
// JPEGImageEncoder encoder = JPEGCodec
// .createJPEGEncoder(imgOutputStream);
// encoder.encode(bufferedImage);
}
catch (IOException e)
{
}
}
public void scaleImage(String imgSrc, OutputStream imgOutputStream,
int scale)
{
try
{
File file = new File(imgSrc);
if (!file.exists())
{
return;
}
InputStream is = new FileInputStream(file);
scaleImage(is, imgOutputStream, scale);
is.close();
}
catch (Exception e)
{
// TODO: handle exception
}
}
protected void sendObject(Object obj, HttpServletResponse response)
{
try
{
OutputStream os = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(obj);
}
catch (Exception e)
{
e.printStackTrace();
}
}
protected void sendJSON(Object obj, HttpServletResponse response)
{
try
{
Map resultmap = new HashMap();
if(obj instanceof List){
resultmap = HttpUtil.getResult(true, obj, ((List) obj).size(), null);
}else{
resultmap = HttpUtil.getResult(true, obj, 0, null);
}
OutputStream os = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(JSONUtil.map2json(resultmap));
}
catch (Exception e)
{
e.printStackTrace();
}
}
protected void sendJSON(boolean success, Object obj, HttpServletResponse response)
{
try
{
Map resultmap = new HashMap();
if(obj instanceof List){
resultmap = HttpUtil.getResult(success, obj, ((List) obj).size(), null);
}else{
resultmap = HttpUtil.getResult(success, obj, 0, null);
}
OutputStream os = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(JSONUtil.map2json(resultmap));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static String getRandomFileName()
{
String s = "";
Random random = new Random();
for (int i = 0; i < 10; i++)
{
int n = random.nextInt(36);
if (n >= 0 && n <= 9)
{
s += String.valueOf(n);
}
else
{
n = n - 10;
s += (char) (97 + n);
}
}
return s;
}
}