2013-01-07 6 views
1

서버와 서블릿에 연결된 로컬 웹 페이지에 표시하려는 간단한 애플릿이 있습니다.서블릿이 간단한 애플릿을 제공 할 수 없습니다.

애플릿 코드 : 내가 HTTP에 연결할 수 있습니다 서블릿 api3.0 및 부두 8 을 사용하고

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.servlet.ServletContextHandler; 

public class MyServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html; chaset=utf-8"); 
     Writer writer = response.getWriter(); 

     writer.write("<applet codebase=\"bin\" code=\"MyApplet.class\" width=\"200\" height=\"200\">" + 
       "If your browser was Java-enabled, a button would appear here. </applet>"); 
    } 

    public static void main(String... args) throws Exception { 
     ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
     context.addServlet(MyServlet.class, "/"); 

     MyApplet applet = new MyApplet(); 
     applet.init(); 
     applet.start(); 

     Server server = new Server(8080); 
     server.setHandler(context); 
     server.start(); 
     server.join(); 

    } 
} 

: 여기

public class MyApplet extends JApplet implements ActionListener { 
    JPanel panel = new JPanel(); 
    JButton btnPush; 

    public MyApplet() {} 

    public void init() { 
     createGUI(); 
    } 

    public void createGUI() { 
     getContentPane().add(panel, BorderLayout.CENTER); 
     panel.setLayout(null); 
     btnPush = new JButton("Push"); 
     btnPush.addActionListener(this); 
     btnPush.setBounds(54, 94, 89, 23); 
     panel.add(btnPush); 
     setSize(200, 200); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if(e.getSource() == btnPush) { 
      JOptionPane.showMessageDialog(this, "Button was pushed"); 
     } 

    } 
} 

서블릿/서버 코드입니다 // "localhost : 8080",하지만 애플릿이로드하려고하면로드가 중단됩니다. 애플릿 태그가있는 html 파일을 실행할 때 문제없이 작동합니다. 서블릿이 문제가되는 것처럼 보입니다. 내가 뭔가 잊었 니?

답변

1

서버의 구성은 서블릿 자체에만 응답 할 수 있습니다. 실제로 요청 된 MyApplet.class 파일을 반환하는 DefaultServlet 설정이 없습니다.

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
context.setContextPath("/"); 
server.setHandler(context); 

// Serve content from bin directory (where the classes are compiled into) 
ServletHolder holder = context.addServlet(DefaultServlet.class,"/*"); 
holder.setInitParameter("resourceBase","bin"); 
holder.setInitParameter("pathInfoOnly","true"); 

// Serve some hello world servlets 
context.addServlet(MyServlet.class,"/*"); 

1 개의 Servlet + 1 DefaultServlet에 대한보다 완전한 예는 임베디드 예제를 참조하십시오. http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java?h=jetty-8

resourceBase init 매개 변수가 클래스 파일이있는 경로를 가리키고 있는지 확인하십시오.

+0

이 기능을 구현하려고했지만 여전히 작동하지 않습니다. 이전과 같은 문제. :( – Henrik

관련 문제