gpt4 book ai didi

java - 卡在 "Concurrency In Practise"文章中,没有 list 2.1。无状态 Servlet

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:27 26 4
gpt4 key购买 nike

摘自书中:

2.1.1。示例:无状态 Servlet在第一章中,我们列出了许多创建线程并从这些线程调用组件的框架,让您有责任使组件成为线程安全的。很多时候,线程安全要求不是源于直接使用线程的决定,而是源于使用 Servlet 框架等工具的决定。我们将开发一个简单的示例(基于 servlet 的分解服务),并慢慢扩展它以添加功能,同时保持其线程安全。

list 2.1 显示了我们的简单分解 servlet。它从 servlet 请求中解包要分解的数字,分解它,并将结果打包到 servlet 响应中。

以及代码示例

@ThreadSafe  
public class StatelessFactorizer implements Servlet {
public void service(ServletRequest req, ServletResponse resp) {
BigInteger i = extractFromRequest(req);
BigInteger[] factors = factor(i);
encodeIntoResponse(resp, factors);
}
}

在没有提供任何其他内容的情况下,我试图通过首先使用有效的动态 Web 模块在 Eclipse 中编写简单的 servlet 来使事情正常工作,然后按照上面示例中所述通过以下代码修改 servlet。但这次我收到了 404 错误,我该如何测试我现在的新 servlet

implements servlet 

相反

extends HttpServlet

我尝试过的代码:

package com.serialize;

import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Test1
*/
@WebServlet("/Test1")
public class Test1 implements Servlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Test1() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter pw = response.getWriter();
pw.print("test1");
// service(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}

@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}

@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
BigInteger i = extractFromRequest(req);
BigInteger[] factors = factor(i);
PrintWriter pw = resp.getWriter();
pw.print(factors);
// encodeIntoResponse(resp, factors);
}

private BigInteger extractFromRequest(ServletRequest req) {
// TODO Auto-generated method stub
String num = req.getParameter("factor");
return BigInteger.valueOf(Long.parseLong(num));
}

private BigInteger[] factor(BigInteger i) {
// TODO Auto-generated method stub
long number = i.longValue();
BigInteger[] ret = null ;
for(long j=2,indx=0;j<number/2;j++)
{
while(number%j == 0)
{
ret[(int) indx++]=BigInteger.valueOf(j);
number = number / j;
}

}

return ret;
}
}

任何帮助将不胜感激。

最佳答案

将代码放在 doGet 方法内,而不是服务方法内。

不实现 Servlet,而是从 HttpServlet 类扩展。

您的代码应该与 this 中的代码类似教程

关于java - 卡在 "Concurrency In Practise"文章中,没有 list 2.1。无状态 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com