我正在开发银行应用程序,如果用户忘记了ID,想生成OTP。我试图在OTP成功的控制器类中设置请求映射,但它显示错误。这是我想生成某种随机方式的代码
@RequestMapping(value = "/otpSuccess", method = RequestMethod.GET)
public void send(HttpServletRequest req) throws Exception {
String numbers = "0123456789";
String acn=req.getParameter("acc");
Random rndm_method = new Random();
char[] otp = new char[6];
for (int i = 0; i < 6; i++)
{
otp[i]=numbers.charAt(rndm_method.nextInt(numbers.length()));
}
Session session=this.sessionFactory.openSession();
Query q=session.createQuery("select email from Student where accno=:n");
q.setParameter("n", acn);
List<String> l=q.list();
String body=otp.toString();
String host="smtp.gmail.com";
final String user="codingbloke90@gmail.com";
final String password="XXXXXXXX"; //My mail's password
String to=l.get(0);
//Get the session object
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
//below is mycom.infotech.controller.FundController.send(FundController.java:111) actual line which is showing error
javax.mail.Session session1 = javax.mail.Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,password);
}
});
//Compose the message
try {
MimeMessage message = new MimeMessage(session1);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("Verification");
message.setText(body);
//send the message
Transport.send(message);
System.out.println("message sent successfully...");
} catch (Exception e) {e.printStackTrace();}
}
}
我得到的错误是
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index 0 out-of-bounds for length 0
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index 0 out-of-bounds for length 0
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.IndexOutOfBoundsException: Index 0 out-of-bounds for length 0
java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
java.base/java.util.Objects.checkIndex(Unknown Source)
java.base/java.util.ArrayList.get(Unknown Source)
com.infotech.controller.FundController.send(FundController.java:111)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.base/java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.21
有人可以建议我对OTP格式进行任何更改还是应该在其他地方使用OTP生成。它在第111行显示了错误,我已经在注释中显示了错误,并且在这里还提到了错误(LINE 111)代码部分>
javax.mail.Session session = javax.mail.Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});