我正在做一个简单的表单验证。我无法转发到jsp页面。请参阅下面的代码。行B和行C工作正常,但行A产生错误
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
@WebServlet("/client")
public class client extends HttpServlet {
private static final long serialVersionUID = 1L;
public client() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = null;
String password = null;
username = request.getParameter("username");
password = request.getParameter("password");
SessionFactory sf1 = new Configuration().configure().buildSessionFactory();
Session s1 = sf1.openSession();
s1.beginTransaction();
Query q = s1.createQuery("from userdb where username = ?");
userdb u2 = (userdb) q.setString(0, username).uniqueResult();
if (u2 != null) {
if (u2.password.equals(password)) {
/*Line - A*/ request.getRequestDispatcher("home.jsp").include(request, response);
} else {
request.setAttribute("error", "Invalid username/password, please try again");
/*Line - B*/ request.getRequestDispatcher("Clientlog.jsp").include(request, response);
}
s1.getTransaction().commit();
s1.close();
}
userdb u1 = new userdb();
u1.setUsername(username);
u1.setPassword(password);
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
s.save(u1);
s.getTransaction().commit();
s.close();
/*Line - C*/ request.getRequestDispatcher("home.jsp").include(request, response);
}
}
行B和行C成功地转到请求的页面,但行A产生此错误
克服这一问题的一种方法是(因为a行和C行是相同的),如果我使用flag=0
来检查它是否进入包含a行的块中,并将该标志标记为1,然后将执行移到C行,它就可以工作了
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
@WebServlet("/client")
public class client extends HttpServlet {
private static final long serialVersionUID = 1L;
public client() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int flag = 0;
String username = null;
String password = null;
username = request.getParameter("username");
password = request.getParameter("password");
SessionFactory sf1 = new Configuration().configure().buildSessionFactory();
Session s1 = sf1.openSession();
s1.beginTransaction();
Query q = s1.createQuery("from userdb where username = ?");
userdb u2 = (userdb) q.setString(0, username).uniqueResult();
if (u2 != null) {
if (u2.password.equals(password)) {
flag = 1;
/*Line - A*/ // request.getRequestDispatcher("home.jsp").include(request, response);
} else {
request.setAttribute("error", "Invalid username/password, please try again");
/*Line - B*/ request.getRequestDispatcher("Clientlog.jsp").include(request, response);
}
s1.getTransaction().commit();
s1.close();
}
if(flag == 0){
userdb u1 = new userdb();
u1.setUsername(username);
u1.setPassword(password);
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
s.save(u1);
s.getTransaction().commit();
s.close();
}
/*Line - C*/ request.getRequestDispatcher("home.jsp").include(request, response);
}
}
viewServlet.java: 我的目标是将'viewservlet.java'中的html代码编写为'result.jsp'中的纯html代码。 我所期望的是,如果我用jsp编写纯html代码,那么所有的记录都将从“MySQL”中检索,将显示在viewservlet.java中。如果我想要编辑,那么删除将发生在“viewservlet.java”中 我尝试了Request.GetAttrib
我有一个小应用程序(HTML表单、servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。 问题是从html提交后,显示“HTTP状态404” null 谢谢! 项目层次结构:http://s23.postimg.org/kgt7r7lwb/capture.jpg main.html: 更新:问题可能出在Controller.java。当我尝试下面的
问题内容: 我有两个Web应用程序,分别是web1和web2。我想将请求从web1 / servlet1转发到web2 / servlet2。可能吗?请帮忙! 问题答案: 这是一个两步过程: 掌握代表 获得从对应 因此,从内部开始是这样的: 所有这些都有一个很大的警告- 容器可能未配置为允许跨上下文转发,因为这存在潜在的安全风险。如果是这种情况,将返回。
问题内容: 我想从一个请求转发 的Servlet 来 操作 这样使用这样的 没用 我该如何解决这个问题? 问题答案: 为此,您可能还需要将过滤器设置为在FORWARD上运行(并在代码中显示INCLUDE,尽管您声明要使用FORWARD):
我已经声明了数组列表,并在servlet中填充了它,我已经在servlet中打印了它,它运行得很好,但是当我转发到JSP时,我得到了下一个空指针异常: java.lang.NullPointerException: 无法调用 “java.util.ArrayList.iterator()” 因为 “miArray2” 为 null -Servlet代码: 索引.jsp代码:
主要内容:请求转发,request 域对象,示例Web 应用在处理客户端的请求时,经常需要多个 Web 资源共同协作才能生成响应结果。但由于 Serlvet 对象无法直接调用其他 Servlet 的 service() 方法,所以 Servlet 规范提供了 2 种解决方案: 请求转发 请求包含(了解即可) 下面我们主要对请求转发进行介绍。 请求转发 请求转发属于服务器行为。容器接收请求后,Servlet 会先对请求做一些预处理,然后将请求传递