Javaservlet和用于通信mysql的实体管理器工厂方法
我有一个Javaservlet和实体管理器工厂Javaservlet和用于通信mysql的实体管理器工厂方法,java,servlets,Java,Servlets,我有一个Javaservlet和实体管理器工厂 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
this.setLevels(request);
如果使用该行,则servlet不起作用
//this.emf = Persistence.createEntityManagerFactory("projectPU");
servlet方法继续
out.println("this is a html content ....");
}
}
如何在servlet中使用Persistence.createEntityManagerFactory(“projectPU”)?谢谢。嘿
如上文所述,如果您不想使用任何框架,您可以这样做:
我创建了一个名为DataBroker的类,这个类包含EntityManager,可以持久化实体或向数据库发送查询
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
public class DataBroker<T> {
private EntityManager em;
public DataBroker() {
if(em == null) {
em = Persistence.createEntityManagerFactory("ProjectPU").createEntityManager();
}
}
public void saveInput(T t) {
em.merge(t);
}
}
import javax.persistence.EntityManager;
导入javax.persistence.persistence;
公共类数据代理{
私人实体管理者;
公共数据代理(){
if(em==null){
em=Persistence.createEntityManager工厂(“ProjectPU”).createEntityManager();
}
}
公共无效保存输入(T){
em.merge(t);
}
}
现在,例如一个PersonServlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import de.professional_webworkx.database.DataBroker;
import de.professional_webworkx.model.Person;
@WebServlet(urlPatterns = {"/personServlet"})
public class PersonServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 318982491390578805L;
private DataBroker<Person> dataBroker = new DataBroker<>();
public PersonServlet() {
super();
}
protected void processRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// do something with the user input from the jsp file
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
processRequest(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
processRequest(req, resp);
}
}
import java.io.IOException;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入de.professional_webworkx.database.DataBroker;
导入de.professional_webworkx.model.Person;
@WebServlet(urlPatterns={“/personServlet”})
公共类PersonServlet扩展了HttpServlet{
/**
*
*/
私有静态最终长serialVersionUID=31898249139578805L;
private-DataBroker-DataBroker=new-DataBroker();
公共人员服务(){
超级();
}
受保护的无效processRequest(HttpServletRequest-req,HttpServletResponse-resp)引发ServletException,IOException{
//对jsp文件中的用户输入执行一些操作
}
@凌驾
受保护的无效数据集(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
processRequest(请求、响应);
}
}
但这是对的,这些框架为您处理所有这些问题,您可以专注于您的业务逻辑或其他方面;)
帕特里克首先,不要手写servlet;使用像SpringMVC这样的框架,它已经为您处理了所有这些。