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
# 1 楼答案
HttpServlet已经定义了可以为不同类型的http请求实现的方法:
等等
所有这些方法都有一个请求和响应参数
您可以读取请求的数据,调用任何需要的服务,然后使用参数中的httpServletResponse编写响应
你不必像在问题中那样定义自己的方法
# 2 楼答案
servlet通常用于web服务器的上下文中。这与通常从命令行执行并以
main
方法开始的“普通Java文件”形成对比为了让servlet正常工作,需要将其作为Java web应用程序的一部分。如果您以前从未这样做过,那么最好遵循有关Java web应用程序的教程
简而言之,HttpServlet的
doPost
、doGet
或service
方法大致相当于main
方法(尽管有一些重要的区别,比如main
方法只输入一次,而service
可以输入多次)# 3 楼答案
当收到GET HTTP请求时,servlet被映射到请求的路径,然后调用servlet ^{} 方法。如果是POST,则调用^{} 。您需要重写这些方法中的一个(或两个)来处理请求和响应
阅读HttpServlet的javadoc了解更多信息
# 4 楼答案
“Java文件”不会执行任何操作。JVM由
java
命令行工具启动,执行main方法servlet在servlet容器中运行,例如ApacheTomcat或Jetty。容器本身是通过一个main方法启动的,它在
web.xml
文件中了解servlet类,并在请求到达时调用servlet的service()
方法这正是servlet所做的(尽管HTTP请求的头由servlet容器解析,并作为请求对象的一部分传递给servlet)。你到底想做什么
如果您没有运行servlet容器,那么使用servlet是没有意义的
# 5 楼答案
NoJava类只是按顺序执行方法
如果你想使用多种方法,你必须分解你的功能,明确地调用你想使用的其他方法,就像你在一个独立的程序中所做的那样
Servlet的执行从一个请求处理程序开始,通常是^{} or ^{}
这里有一个tutorial to read through,但还有无数其他的——只需搜索“servlet教程”
# 6 楼答案
方法从不按顺序执行。它们在被调用时被执行
servlet的功能是为来自web浏览器的HTTP请求提供服务。为此,servlet必须实现
service()
方法,然后从内部调用方法您也可以实现
doPost()
或doGet()
,但它们只响应POST和GET命令你可以先看看here