2013-03-19 2 views
0

На самом деле в моем приложении для Java. Регистрация - это так, что я отправляю почту по электронной почте Пользователя.Как связать электронную почту с помощью Java?

<bean id="activateAccountTemplate" class="org.springframework.mail.SimpleMailMessage"> 
    <property name="subject" value="Account activation" /> 
    <property name="text"> 
     <value> 
     <![CDATA[ 
      <html><body><p>Dear %s</p><p>Click <a href="http://localhost:8080/EClass/reset.jsp?a=%s">here</a> to activate your account.</p></body></html> 
     ]]> 
     </value> 
    </property> 
</bean> 

Так это работает perfectly.After Нажмите на ссылку

http://localhost:8080/EClass/reset.jsp?a=tdpTA3Dz8DYSI+9F/DpMxmxGD/a1Kl+3oYqXc1NNH0U= 

СЛЫШАТЬ Я использую шифрование Mechanisum.

И у моей базы данных есть столбец, как .. S_id, username, password, active(T/F).

Мое требование Когда когда-либо зарегистрировать Active всегда F(false), но после того, как нажать на ссылку active будет true (когда-либо Активный верно только тогда Логин разрешено).

Как сделать в reset.jsp? На самом деле мое мышление

  1. Написать контроллер для этого и обновить Active столбец True (Но как получить SID для этого)

  2. Получение SID, На самом деле зашифровать ключ, показанный выше будет генерировать так этот ключ быть расшифровки и отправить к контроллеру и с помощью DB Query выберите конкретного пользователя и установить активный верно. (Но услышать также, как получить URL-адрес ключа ... request.getParameter(?))

Пожалуйста, дайте мне предложение ... я застрял как это сделать ..

Дайте некоторые примеры кода на reset.jsp

EDIT: На самом деле я слежу MVC принцип так с вне reset.jsp как писать прямой класс контроллера ..

ответ

1

Ваш reset.jsp может быть что-то вроде этого:

<% 
    String token = request.getParameter("a"); 

    // Connection to DB executing this query : 
    // "UPDATE users SET active = true WHERE S_id = " + token 
%> 

Так как вы, вероятно, уже код для доступа к базе данных, я не буду включать этот пример часть, но поставить вас на правильном пути. Было бы также очень полезно поймать, если обновляется одна строка и возвращать информацию пользователю, если она корректно работала, если ни одна строка не обновлялась, чтобы проверить их URL.

Надеюсь, что эта помощь.

EDIT:

Такой же метод, как Servlet:

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class Reset extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException { 
    String token = request.getParameter("a"); 

    // Connection to DB executing this query : 
    // "UPDATE users SET active = true WHERE S_id = " + token 

    response.setContentType("text/html"); 
    PrintWriter out = res.getWriter(); 

    out.println("<HTML><BODY>Your response to the user depending on rows updated from SQL</BODY></HTML>"); 
    } 
} 

Вы также должны определить в сети.XML:

<servlet> 
    <servlet-name>reset</servlet-name> 
    <servlet-class>myservlets.reset</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>reset</servlet-name> 
    <url-pattern>/reset</url-pattern> 
</servlet-mapping> 

И изменить ссылку:

<a href="http://localhost:8080/EClass/reset?a=%s">here</a> 

EDIT:

Такой же метод, как Spring Controler:

@Controller 
@RequestMapping(value = "/activation" 
public class AccountActivationController 
{ 
    @RequestMapping(method = RequestMethod.GET) 
    public String setupForm(@RequestParam("a") String token, ModelMap model) { 
     // Connection to DB executing this query : 
     // "UPDATE users SET active = true WHERE S_id = " + token 

     return successful ? "activationSuccessful" : "activationError"; 
    } 
} 

не может помочь много, так как я ve никогда не делал Весна до ...

+0

Actullay i'm usig MVC, поэтому, если возможно написать Direct Contrllor класс с использованием reset.jsp –

+0

Я обновил ответ. Также я думаю, что активация будет лучшим названием, чем сброс, конечно! –

+0

Спасибо за ваш повтор .. Но я использую весну, так что можно создать некоторый класс контроллера и все записи в базе данных слышать? .. –

1

Вы должны сделать активные и другие вещи в отдельной таблице.

table user 

id username password 


table activation 

id active expired_time token user_id 

Как только пользователь завершит регистрацию, в таблицу активации должна быть вставлена ​​одна запись. активное поле является ложным и истекшее время - через 2 часа и т. д.

Затем используйте токен, чтобы посмотреть таблицу и выполнить активную работу.

+0

oh .. Большое спасибо за эту идею .. я забыл об этом ... Пожалуйста, помогите мне, как написать контроллер весны, используя запрос url? –

Смежные вопросы