发布于2023-02-04 22:50 阅读(1060) 评论(0) 点赞(15) 收藏(2)
我正在尝试调用一个 Servlet,该 Servlet 将从另一个 Servlet 以 json 格式写入从数据库中获取的 javaobject。
我的代码流是 Servlet1 check_login
-> Servlet2jsonCreate
当我尝试这样做时出现 HTTP 404 错误。
这是我的 check_login.java Servlet 代码
@WebServlet("/Check_login")
public class Check_login extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String user_name=request.getParameter("user_name");
String password=request.getParameter("password");
try {
String role=check_database(user_name,password);
if(role.equals("")) {
response.sendRedirect("index.html");
}else if(role.equals("admin")) {
List<Programs> Programs_Offered = new ArrayList<Programs>();
RequestDispatcher rd = request.getRequestDispatcher("jsonCreate");
rd.forward(request,response);
}else if(role.equals("mac")) {
response.sendRedirect("mac_welcome.jsp");
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
而且,这里是 jsonCreate.java Servlet 代码
@WebServlet("/jsonCreates.json")
public class jsonCreate extends HttpServlet {
public static List<Programs> list() throws SQLException, IOException {
List<Programs> Programs_Offered = new ArrayList<Programs>();
Connection conn=DataBase_Connection.getInstance().getConnection();
Statement ps=conn.createStatement();
ResultSet rs = ps.executeQuery(Queries.view_programs);
while(rs.next()){
Programs p=new Programs();
p.setProgramName(rs.getString("ProgramName"));
p.setDescription(rs.getString("Description"));
p.setApplication_Eligibility(rs.getString("Applicant_Eligibility"));
p.setDuration(rs.getInt("Duration"));
p.setDegree_Certificate_Offered(rs.getString("Degree_Certificate_Offered"));
Programs_Offered.add(p);
}
return Programs_Offered;
}
private static final long serialVersionUID = 1L;
public jsonCreate() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Programs> categories=null;
try {
categories = jsonCreate.list();
} catch (SQLException e) {
e.printStackTrace();
}
String categoriesJson = new Gson().toJson(categories);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(categoriesJson);
//response.sendRedirect("admin_welcome.jsp");
}
当我将 jsonCreates.json 的名称设置为与 java servlet Name (jsonCreate) 相同时,它运行良好并在 URL 的页面上打开 json 数据http://localhost:8081/servlet_demo/jsonCreate
。
然后,当我重新定向到一个新的 JSPadmin_welcome.jsp
时,它可以毫无问题地打开,但我没有在链接中找到任何可用的 json 数据http://localhost:8081/servlet_demo/jsonCreate
。
我犯了一些错误,但我找不到它。有人能告诉我这里缺少什么吗?
您应该将 jsonCreates.json 的名称设置为与 java servlet Name (jsonCreate) 相同
@WebServlet("/jsonCreate")
你没有得到 json 数据的原因是因为 response.sendRedirect() 不转发任何数据,它只是重定向(导航)到一个页面。
如果您希望您的 JSON 数据在整个页面导航中都可以访问,那么您应该创建一个会话并设置一个会话变量来保存此 json 数据。
JAVA
HttpSession session = request.getSession(false);
session.setAttribute("variable", "json value");
response.sendRedirect("/page");
JSP
<%
out.println(session.getAttribute("variable"));
%>
或者
你可以使用 forward() 如下:
JAVA
request.setAttribute("variable", "JSON data");
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
JSP
<%
out.println(request.getAttribute("variable"));
%>
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/641613/6b202d536fb41f918699/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!