除了web.xml,你可以在哪里告诉你的web应用程序将请求映射到servlet?

时间:2018-05-01 10:12:52

标签: java tomcat

我是java web dev的新手。我做了我的研究,但仍然无法自己解决这个问题。

我正在尝试分析一个项目,它集成了spring,struts和hibernate。对于POJO的Spring和基本的应用程序开发,struts似乎用于处理请求和项目的更多“web-ish”部分,而hibernate与hql一起用于数据库接口。

我对信息流如何运作非常非常好奇,特别是对于post方法。通过冗长但有益的研究,似乎在离开TLS / SSL隧道后,解密的http(解密所以“s”部分可能不再存在,lol)请求(ascii文本)将被发送到java对象(从java类实例化,当然可能编译)容器。这些对象通常被称为servlet(如果我错了,请纠正我)。

当我试图找出容器如何决定它给出请求的servlet时,会出现令人费解的部分。再次通过研究它似乎通常由一个名为web.xml的配置文件处理,但奇怪的是我在这个文件中找不到它应该是的任何标记,更不用说名称与“目标”匹配的servlet了“action属性指定的名称,如下所示:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    String json = null;
    Spinner spinner;
    Spinner spinner1;

    public String loadJSONFromAsset() {

        try {
            InputStream is = getAssets().open("CustomerList.json");

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {

            spinner = findViewById(R.id.spinner_01);
            List<String> items = new ArrayList<>();
            spinner.setOnItemClickListener(this);

            spinner1 = findViewById(R.id.spinner_02);
            List<String> item = new ArrayList<>();

            JSONObject obj = new JSONObject(loadJSONFromAsset());
            JSONArray array = obj.getJSONArray("Sheet1");

            JSONObject obj1 = new JSONObject(loadJSONFromAsset());
            JSONArray array1 = obj1.getJSONArray("Sheet2");
        /*this.setTitle(root.getString("title"));*/

            for (int i = 0; i < array.length(); i++) {
                JSONObject object = array.getJSONObject(i);
                items.add(object.getString("FIELD1"));
                //    item.add(object.getString("FIELD2"));
                //    items.add(object.getString("FIELD3"));
            }

            for (int i = 0; i < array.length(); i++) {
                JSONObject object = array.getJSONObject(i);
                //    items.add(object.getString("FIELD1"));
                item.add(object.getString("FIELD2"));
            }

            ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
            spinner.setAdapter(adapter);
            ArrayAdapter adapter1 = new ArrayAdapter(this,android.R.layout.simple_list_item_1, item);
            spinner1.setAdapter(adapter1);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        spinner1.setSelection(position);
    }
}

然而整个项目在Tomcat服务器上运行得很好。我能得出的唯一结论是,必须有其他方法在tomcat服务器中配置“java对象容器”来处理用户请求。它们是什么?/它是什么?

在我的理解中也可能存在很多误解,例如:整个java-class-object部分,纠正我,如果我错了你会这么善良。

1 个答案:

答案 0 :(得分:0)

从Servlet规范3.0版开始,您还可以使用注释告诉服务器您的servlet在哪里。

在代码中,您正在寻找类似的内容:

@WebServlet("/handler/register")
public class SomeRandomServlet extends HttpServlet