There are three things you have to set
(1) tell the servlet engine what the character encoding was used in the source files
(2) tell the servlet engine what character set you want to be output
(3) tell the receiver what character encoding the stream is in.
You meta tag accomplishes only the last of these, but you may not actually be sending an output stream formatted in that encoding.
Use this to tell the servlet engine how to read the source file, and you need to put in the actual character set that the source file is encoded in. It will be UTF-8 only if you have used a UTF-8 editor. It is probably ISO-8859-1 if you didn't take some pains to make it UTF-8:
<%@page contentType="text/html;charset=???????"%>
And use this to tell it how to output the stream:
response.setCharacterEncoding("text/html; charset=UTF-8")
In your case, since you know the data in the DB is encoded in UTF-8, it is probably this last setting that will solve the problem.