有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java与servlet一起工作?

普通的java文件只执行在main中调用的那些方法。但是servlet做什么呢?我想它可能会执行文件,但我只是尝试拆分HTTP servlets请求和响应,但它不起作用。使用servlet读取输入流,然后执行一些可以调用响应编写器方法的函数,这是一种什么好方法

这是我的试用代码:

public void requestReader(HttpServletRequest req) {
    try {
        int len = req.getContentLength();
        byte[] input = new byte[len];

        ServletInputStream sin = req.getInputStream();
        int c, count = 0 ;
        while ((c = sin.read(input, count, input.length-count)) != -1) {
            count +=c;
        }

        sin.close();        
        String inString = new String(input);
        int index = inString.indexOf("=");            
        String value = inString.substring(index + 1);                        
        inputStream = URLDecoder.decode(value, "UTF-8");         

    } catch (IOException e) {

    }

}//end of requestReader 

public void responseWriter(HttpServletResponse resp) {
    try{
            resp.setStatus(HttpServletResponse.SC_OK);
            OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream());
            writer.write("Working");    
            writer.flush();
            writer.close();               

    } catch (IOException e) {

    }


}//end of responseWriter    

共 (6) 个答案

  1. # 1 楼答案

    HttpServlet已经定义了可以为不同类型的http请求实现的方法:

    doGet()
    doPost()
    doDelete()
    doPut()
    

    等等

    所有这些方法都有一个请求和响应参数

    您可以读取请求的数据,调用任何需要的服务,然后使用参数中的httpServletResponse编写响应

    你不必像在问题中那样定义自己的方法

  2. # 2 楼答案

    servlet通常用于web服务器的上下文中。这与通常从命令行执行并以main方法开始的“普通Java文件”形成对比

    为了让servlet正常工作,需要将其作为Java web应用程序的一部分。如果您以前从未这样做过,那么最好遵循有关Java web应用程序的教程

    简而言之,HttpServlet的doPostdoGetservice方法大致相当于main方法(尽管有一些重要的区别,比如main方法只输入一次,而service可以输入多次)

  3. # 3 楼答案

    当收到GET HTTP请求时,servlet被映射到请求的路径,然后调用servlet ^{}方法。如果是POST,则调用^{}。您需要重写这些方法中的一个(或两个)来处理请求和响应

    阅读HttpServlet的javadoc了解更多信息

  4. # 4 楼答案

    A normal java file executes only those methods called in the main.

    “Java文件”不会执行任何操作。JVM由java命令行工具启动,执行main方法

    But what does a servlet do? I thought maybe it executes down the file

    servlet在servlet容器中运行,例如ApacheTomcat或Jetty。容器本身是通过一个main方法启动的,它在web.xml文件中了解servlet类,并在请求到达时调用servlet的service()方法

    What is a neat way of working with a servlet to read an input stream, then execute some functions which can call the response writer method?

    这正是servlet所做的(尽管HTTP请求的头由servlet容器解析,并作为请求对象的一部分传递给servlet)。你到底想做什么

    如果您没有运行servlet容器,那么使用servlet是没有意义的

  5. # 5 楼答案

    NoJava类只是按顺序执行方法

    如果你想使用多种方法,你必须分解你的功能,明确地调用你想使用的其他方法,就像你在一个独立的程序中所做的那样

    Servlet的执行从一个请求处理程序开始,通常是^{} or ^{}

    这里有一个tutorial to read through,但还有无数其他的——只需搜索“servlet教程”

  6. # 6 楼答案

    方法从不按顺序执行。它们在被调用时被执行

    servlet的功能是为来自web浏览器的HTTP请求提供服务。为此,servlet必须实现service()方法,然后从内部调用方法

    您也可以实现doPost()doGet(),但它们只响应POST和GET命令

    你可以先看看here