2014-03-04 4 views
1

나는 CQ에 대해 매우 익숙하다. 나는 이것을 매우 오랫동안 고수했다. 내가하고 싶은 일은 "일반 태그를 사용하여 사용자 이름 암호를 받아서 서블릿에 게시하는 페이지를 만듭니다.Adobe CQ 5.5에 양식을 게시하는 방법은 무엇입니까?

서블릿은 str.equals ("username ")를 사용하여 사용자 이름 암호를 확인하고 다른 페이지로 리디렉션합니다. 성공 또는 실패 " 예를 들어 'stackoverflow 등의 사이트에 등록 된 사람들'과 같은 일반 사용자가있는 웹 사이트를 작성 중입니다.이 사용자는 이고 편집자가 아닌은 콘텐츠를 편집 할 수 있습니다. 매우 기본적인 작업이지만 나에게 너무 어려움. 여기에 코드가 있습니다. 내가 CRXDE를 사용하여 포스트 서블릿 슬링 쓴 는 성공적으로

package com.example; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import org.apache.felix.scr.annotations.Component; 
import org.apache.felix.scr.annotations.Properties; 
import org.apache.felix.scr.annotations.Service; 
import org.apache.sling.api.SlingHttpServletRequest; 
import org.apache.sling.api.SlingHttpServletResponse; 
import org.apache.sling.api.servlets.SlingAllMethodsServlet; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
@Component(immediate=true, metatype=false, label="EXAMPLE SERVLET") 
@Service 
@Properties(value = { 
     @org.apache.felix.scr.annotations.Property(name="sling.servlet.methods", value={"POST"}), 
     @org.apache.felix.scr.annotations.Property(name="sling.servlet.resourceTypes", value={"sling/servlet/default"}), 
     @org.apache.felix.scr.annotations.Property(name="sling.servlet.selectors", value={"SELECTORNAME"}), 
     @org.apache.felix.scr.annotations.Property(name="sling.servlet.extensions", value={"html"}) 
}) 
public class ExampleServlet extends SlingAllMethodsServlet { 
    private static final Logger log = LoggerFactory.getLogger(ExampleServlet.class); 
    private static final long serialVersionUID = 1L; 

    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { 
     //String redirect = request.getParameter(":redirect"); 

     log.info("The Sling Post Servlet- Example Servlet has been called !! "); 
     String username = request.getParameter("username"); 
     String password = request.getParameter("password"); 
     if(username.equals("oliver")&& password.equals("oliver")) 
     { 
      response.sendRedirect("/content/mywebsite/en/products"); 
     } 
     else 
     { 
      response.sendRedirect("/content/mywebsite/en/services"); 
     } 
     log.info("Sucessfull Response Sent "); 
    } 

} 

I get error as 
Status 
200 
Message 
OK 
Location /example.SELECTORNAME.html 
Parent Location/
Path  
/example.SELECTORNAME.html 
Referer http://localhost:4502/content/mywebsite/en/products.html 
ChangeLog 
<pre>modified("/example.SELECTORNAME.html/username");<br/ 

번들을 생성하고 미리

<%-- 

    My Content Page Componenet component. 

    General Description 

--%><% 
%><%@include file="/libs/foundation/global.jsp"%><% 
%><%@page session="false" %> 

<% 
%><% 
    // TODO add you code here 
%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<cq:include script="head.jsp"/> 



<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>My title</title> 
</head> 
<body> 

<div>My First Page </div> 
<form action="/example.SELECTORNAME.html" method="POST"> 
<input type="text" name ="username"/> 
<input type="password" name "password"/> 
<input type="submit" value="Login"/> 

</form> 

</body> 
</html> 

감사를 다음과 같이 JSP입니다!

+0

서블릿이 활성화되어 있으면 osgi 구성 요소 목록을 체크인 할 수 있습니까? (/ system/console/구성 요소). 일반 POST 서블릿이 요청을 처리하고있는 것 같습니다 – santiagozky

+0

ExampleServlet이 활성입니다 ... 확인했습니다! – Oliver

답변

2

파일에 서블릿 경로가 없습니다. /** * @ scr.component metatype = "false" * @ scr.service interface = "javax.servlet.Servlet" * @ scr.property name = "sling.servlet.paths"values ​​= "/ bin/" */ 공용 클래스 LoginServlet는 SlingAllMethodsServlet를 확장 { ...... }

JSP -

형태 이름 ="로그인 frmLogin "ID ="frmLogin "방법 ="게시물 "행동 = "/ bin/login"

+0

실제 경로가 누락되어 모든 복잡한 애언가를 @SlingServlet으로 바꿨습니다. 여기를 참조하십시오. http://blogs.adobe.com/aaa/2012/09/cq-tips-and-tricks-1-how-to-define- a-slingservlet-cq5-5-5-6.html <-이 모든 것을 말해줍니다 !! – Oliver