【问题标题】:multiple actions (CRUD) in one servlet java一个 servlet java 中的多个操作 (CRUD)
【发布时间】:2012-03-19 15:33:37
【问题描述】:

我想将一个 servlet 用于四个动作 CRUD。以下 servlet 适用于通过以下 url 添加数据

http://localhost:8080/mobsurvey/register-company/?companyname=xyz&email=abc@abc.com&username=user&password=pass&description=xyz

像json一样响应 {"结果":"true","lastId":2}

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.*; 
import com.saffroze.Event;




public class CompanyRegister extends HttpServlet {
Connection conn=null;
public CompanyRegister() throws InstantiationException, IllegalAccessException {

    conn = Dbhelper.getConnection();
    //      creatBookManagerTable();
}

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {


    String companyname = req.getParameter("companyname");
    String email = req.getParameter("email");
    String usr = req.getParameter("username");
    String pwd = req.getParameter("password");
    String description = req.getParameter("description");



    PreparedStatement pst=null;
    String sql = "insert into company("+ "name,"+ "email,"+ "username,"+ "password,"+ "description)"+" values(?,?,?,?,?)";      

    try {

        PreparedStatement pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
        //String insertDataSql="insert into company(name,email,username,password,description) values('" + companyname + "','" + email + "','" + usr + "','" + pwd + "','" + description + "');";

        //Statement stmt;

        pstmt.setString(1,companyname);
        pstmt.setString(2,email);
        pstmt.setString(3,usr);
        pstmt.setString(4,pwd);
        pstmt.setString(5,description);

        Gson gson = new Gson();
        //resp.setContentType("application/json; charset=UTF-8");
        resp.setContentType("text/plain");
        pstmt.executeUpdate();
        ResultSet keys = pstmt.getGeneratedKeys();  

        keys.next();  
        int id = 0; 

        id = keys.getInt(1);  

        keys.close();  



        if(id>0){

            Event obj = new Event("true",id);

            resp.getWriter().println(gson.toJson(obj));     
        }else
        {
            int emptyid=0;
            Event obj = new Event("false",emptyid);


            resp.getWriter().println(gson.toJson(obj));


        }

    }

    catch(Exception e){

        e.printStackTrace();
    }

}

}

我想对其他操作使用相同的 servlet,例如通过 url 删除、查看等(它应该只使用上面的一个 servlet 进行操作)

http://localhost:8080/mobsurvey/view-company/?company_id=1

应该以 json 格式响应它的数据

当前为 web.xml

  <display-name>mobsurvey</display-name>
  <servlet>
 <servlet-name>CompanyRegister Servlet</servlet-name>
 <servlet-class>com.saffroze.CompanyRegister</servlet-class>

 </servlet>
 <servlet-mapping>
 <servlet-name>CompanyRegister Servlet</servlet-name>
 <url-pattern>/register-company/*</url-pattern>
 </servlet-mapping>

 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
  </welcome-file-list>
 </web-app> 

我是java-servlet的新手

有什么建议吗? 谢谢。

【问题讨论】:

  • 你的问题是什么?你想对你的方法发表评论。或者想知道如何添加删除/查看功能。或者如何映射各种网址?
  • @Nishant。我想使用一个 servlet 来执行与该 servlet 相关的所有操作。谢谢

标签: java json servlets url-routing crud


【解决方案1】:

您可以在网址中添加一些额外信息。
类似参数

?action=edit&id=1

在您的 servlet 中,您可以使用 action 参数进行决策

String action = request.getParameter("action");
if(action.equal(...) { /* Your logic here */ }

或者您可以实现自己的调度程序以使用 URL 路由请求

company/edit/1

或者您可以覆盖 service() 方法以支持 PUT、DELETE 等,并使您的 servlet 成为 RESTful。但是浏览器对这些方法的支持is not very good

【讨论】:

  • @hope_is_grim。感谢您的回复。我正在构建未来可能规模化的调查应用程序。这是更好的方法还是任何其他建议?
  • 如果不一定非要servlet,我觉得RESTful Web Service是更好的解决方案。您可以先查找一些有关创建和使用 RESTful Web 服务的教程。
【解决方案2】:

真的不是你的问题的答案。有几种方法可以实现您想要实现的目标,其中之一就是 @hope_is_grim 提出的。恕我直言,将单个 Servlet 用于许多 CRUD 操作不是可扩展的解决方案。我去过那里,做过,后来使用JerseyRESTEasy 之类的库切换到纯RESTful Web 服务。它使代码可维护、可扩展和可读。越早选择越好。

有用的线程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多