Конечная точка "/ MainMenu" должна соответствовать значению, которое вы ввели в дескрипторе развертывания web.xml в разделе
С РЕДАКТИРОВАН:
Я использую фреймворк Captain Casa.
У меня есть кнопка, которая откроет новую вкладку и перейдет на страницу входа в Facebook.
public void goTofbPage(javax.faces.event.ActionEvent event){
FBConnection fbConnection = new FBConnection();
setBrowserUrl(fbConnection.getFBAuthUrl());
m_browserTrigger.trigger();
}
Если пользователь успешно вошел в систему, он будет перенаправлен на мою страницу вместе с данными пользователя.
Чтобы получить accessToken от пользователя, я использовал HttpServlet.
Но как я могу назвать этот HttpServlet?
Мне действительно нужно позвонить или он запустится автоматически?
мой JSP выглядит так.
<!-- ========== CONTENT BEGIN ========== -->
<f:view>
<h:form>
<f:subview id="lgwfacebookg_sv">
<t:beanprocessing id="g_1" >
<t:clienthttpsender id="g_2" />
<t:jshowurl id="g_3" target="_blank" trigger="#{d.lgwfacebook.browserTrigger}" url="#{d.lgwfacebook.browserUrl}" usedesktop="true" />
<t:timer id="g_4" duration="1000" durationtype="regular" />
</t:beanprocessing>
<t:rowtitlebar id="g_5" />
<t:rowheader id="g_6" />
<t:rowbodypane id="g_7" >
<t:row id="g_8" >
<t:label id="g_9" text="#{d.lgwfacebook.name}" />
</t:row>
<t:row id="g_10" >
<t:field id="g_11" text="#{d.lgwfacebook.browserUrl}" width="0" />
</t:row>
<t:row id="g_12" >
<t:button id="g_13" actionListener="#{d.lgwfacebook.onRedirectUrl}" height="10" image="/images/fbimg.png" width="10" />
</t:row>
<t:rowdistance id="g_14" height="20" />
<t:row id="g_15" />
<t:row id="g_16" >
<t:browser id="g_17" url="#{d.lgwfacebook.fbbrowserURL}" />
</t:row>
</t:rowbodypane>
<t:rowstatusbar id="g_18" />
<t:pageaddons id="g_pa"/>
</f:subview>
</h:form>
</f:view>
<!-- ========== CONTENT END ========== -->
Я уже добавил его в web.xml тоже.
<servlet>
<servlet-name>MainMenu</servlet-name>
<servlet-class>managedbeans.MainMenu</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MainMenu</servlet-name>
<url-pattern>/MainMenu</url-pattern>
</servlet-mapping>
Мой код сервлета:
public class MainMenu extends HttpServlet{
private static final long serialVersionUID = 1L;
private String code="";
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
code = req.getParameter("code");
if (code == null || code.equals("")) {
throw new RuntimeException(
"ERROR: Distadn't get code parameter in callback.");
}
FBConnection fbConnection = new FBConnection();
String accessToken = fbConnection.getAccessToken(code);
FBGraph fbGraph = new FBGraph(accessToken);
String graph = fbGraph.getFBGraph();
Map<String, String> fbProfileData = fbGraph.getGraphData(graph);
ServletOutputStream out = res.getOutputStream();
out.println("<div>Welcome "+fbProfileData.get("first_name"));
out.println("<div>Your Email: "+fbProfileData.get("email"));
}