棘手呀,页面转发不过去jsp页面

棘手呀,页面转发不过去jsp页面

http://img1.sycdn.imooc.com//climg/5bd3e3c10001d6b219201041.jpg

我排查了一遍,就是这个转发出了问题,但是是在找不出问题在哪?还请老师指导。

=================================================================

jsp页面

================================================================

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
   <head>
       <meta charset="UTF-8">
       <title>我的信息</title>
       <link rel="stylesheet" href="../../../css/bootstrap.min.css">
       <link rel="stylesheet" href="../../../css/add.css">
   </head>
   <body>
       <nav class="navbar navbar-default">
           <div class="container">
               <div class="navbar-header">
                   <a class="navbar-brand" href="/message/list.do">
                       返回留言板
                   </a>
               </div>
           </div>
       </nav>
       <div class="container">
           <div class="jumbotron">
               <h1>Hello, ${user.name}!</h1>
               <p>信息都在这里了 ^_^</p>
           </div>
           <div class="page-header">
               <h3><small>个人信息</small></h3>
           </div>
           <form class="form-horizontal" action="/editUserPrompt.do" method="post">
               <input type="hidden" id="id" name="id" value="${user.id}">
               <div class="form-group">
                   <label for="name" class="col-sm-2 control-label">用户 :</label>
                   <div class="col-sm-6">
                       <input type="text" class="form-control" id="name" value="${user.name}" readonly>
                   </div>
               </div>
               <div class="form-group">
                   <label for="realName" class="col-sm-2 control-label">姓名 :</label>
                   <div class="col-sm-8">
                       <input type="text" class="form-control" id="realName" value="${user.realName}" readonly>
                   </div>
               </div>
               <div class="form-group">
                   <label for="birthday" class="col-sm-2 control-label">生日 :</label>
                   <div class="col-sm-8">
                       <input name=""  class="form-control" rows="3" id="birthday" value="${user.birthday}" readonly>
                   </div>
               </div>
               <div class="form-group">
                   <label for="phone" class="col-sm-2 control-label">电话 :</label>
                   <div class="col-sm-8">
                       <input name=""  class="form-control" rows="3" id="phone" value="${user.phone}" readonly>
                   </div>
               </div>
               <div class="form-group">
                   <label for="address" class="col-sm-2 control-label">地址 :</label>
                   <div class="col-sm-8">
                       <input name=""  class="form-control" rows="3" id="address" value="${user.address}" readonly>
                   </div>
               </div>
               <div class="form-group">
                   <div class="col-sm-offset-2 col-sm-10">
                       <button type="submit" class="btn btn-primary">修改</button>&nbsp;&nbsp;&nbsp;
                   </div>
               </div>
           </form>
       </div>
       <footer class="text-center" >
           copy@imooc
       </footer>
   </body>
</html>

=================================================================

servlet页面

=================================================================

package com.goudan.jdbc.servlet;

import com.goudan.jdbc.bean.User;
import com.goudan.jdbc.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Objects;

/**
* 用户的Servlet
*/
public class UserServlet extends HttpServlet {
   UserService userService = null;

   @Override
   public void init() throws ServletException {
       super.init();
       userService = new UserService();
   }

   @Override
   protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String pathName = request.getServletPath();
       if (Objects.equals(pathName, "/userInfo.do")) {
           //查看个人信息
           //要把user从Session中取出User对象,也可以通过过滤器从Session中取出user再把user写进request的attribute里
//            User user = (User) request.getSession().getAttribute("user");
//            System.out.println(user);
//            request.setAttribute("user", user);
           request.getRequestDispatcher("/WEB-INF/views/biz/user.jsp").forward(request, response);

       } else if (Objects.equals(pathName, "/editUserPrompt.do")) {
           //查看修改个人信息
           //1.从Session中获取,也就是和上一个if同样
           //2.可扩展的使用方式:根据页面ID从数据库中查询
           Long id = Long.valueOf(request.getParameter("id"));
           User user = userService.getUserById(id);
           if (user != null) {
               //跳转到修改个人信息页面
               request.setAttribute("user", user);
               request.getRequestDispatcher("/WEB-INF/views/biz/edit_user.jsp").forward(request, response);
           } else {
               //返回个人信息页面也就是原页面
               request.getRequestDispatcher("/WEB-INF/views/biz/user.jsp").forward(request, response);
           }

       } else if (Objects.equals(pathName, "/editUser.do")) {
           //编辑并且修改个人信息
           Long id = Long.valueOf(request.getParameter("id"));
           String name = request.getParameter("name");
           String password = request.getParameter("password");
           String realName = request.getParameter("realName");
           String birthday = request.getParameter("birthday");
           String phone = request.getParameter("phone");
           String address = request.getParameter("address");
           User user = new User();
           user.setId(id);
           user.setUsername(name);
           user.setReal_name(realName);
           user.setPassword(password);
           try {
               user.setBirthday(new SimpleDateFormat("yyyy-mm-dd").parse(birthday));
           } catch (ParseException e) {
               System.out.println("格式化Birthday字段失败~~~");
               e.printStackTrace();
           }
           user.setPhone(phone);
           user.setAddress(address);
           boolean result = userService.updataUser(user);
           if (result != false) {
               request.setAttribute("user", user);
               request.getSession().setAttribute("user", user);
               request.getRequestDispatcher("/WEB-INF/views/biz/edit_user.jsp").forward(request, response);
           } else {
               request.getRequestDispatcher("/WEB-INF/views/error/404.jsp").forward(request, response);
           }
       } else {
           request.getRequestDispatcher("/WEB-INF/views/error/404.jsp").forward(request, response);
       }

   }

   @Override
   public void destroy() {
       super.destroy();
   }
}

=================================================================

filter

=================================================================

package com.goudan.jdbc.filter;

import com.goudan.jdbc.bean.User;

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

public class UserFilter implements Filter {

   @Override
   public void init(FilterConfig filterConfig) {

   }

   @Override
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
       User user = (User) ((HttpServletRequest) servletRequest).getSession().getAttribute("user");
       servletRequest.setAttribute("user",user);
       filterChain.doFilter(servletRequest,servletResponse);
   }

   @Override
   public void destroy() {

   }
}
=================================================================

xml配置

=================================================================

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
        version="4.0">

   <servlet>
       <servlet-name>MessageListServelt</servlet-name>
       <servlet-class>com.goudan.jdbc.servlet.MessageListServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>MessageListServelt</servlet-name>
       <url-pattern>/message/list.do</url-pattern>
   </servlet-mapping>

   <servlet>
       <servlet-name>LoginServlet</servlet-name>
       <servlet-class>com.goudan.jdbc.servlet.LoginServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>LoginServlet</servlet-name>
       <url-pattern>/main.do</url-pattern>
   </servlet-mapping>

      <servlet>
       <servlet-name>LoginPromptServlet</servlet-name>
       <servlet-class>com.goudan.jdbc.servlet.LoginPromptServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>LoginPromptServlet</servlet-name>
       <url-pattern>/login.do</url-pattern>
   </servlet-mapping>

   <servlet>
       <servlet-name>VerificationCodeImageServlet</servlet-name>
       <servlet-class>com.goudan.jdbc.servlet.VerificationCodeImageServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>VerificationCodeImageServlet</servlet-name>
       <url-pattern>/verificationCode.do</url-pattern>
   </servlet-mapping>

   <servlet>
       <servlet-name>UserServlet</servlet-name>
       <servlet-class>com.goudan.jdbc.servlet.UserServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>UserServlet</servlet-name>
       <url-pattern>/userInfo.do</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
       <servlet-name>UserServlet</servlet-name>
       <url-pattern>/editUserPrompt.do</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
       <servlet-name>UserServlet</servlet-name>
       <url-pattern>/editUser.do</url-pattern>
   </servlet-mapping>



   <filter>
       <filter-name>UserFilter</filter-name>
       <filter-class>com.goudan.jdbc.filter.UserFilter</filter-class>
   </filter>
   <filter-mapping>
       <filter-name>UserFilter</filter-name>
       <url-pattern>*.do</url-pattern>
   </filter-mapping>

   <filter>
       <filter-name>CharsetEncodingFilter</filter-name>
       <filter-class>com.goudan.jdbc.filter.CharsetEncodingFilter</filter-class>
       <init-param>
           <param-name>encoding</param-name>
           <param-value>UTF-8</param-value>
       </init-param>
   </filter>
   <filter-mapping>
       <filter-name>CharsetEncodingFilter</filter-name>
       <url-pattern>*.do</url-pattern>
   </filter-mapping>


   <welcome-file-list>
       <welcome-file>/index.jsp</welcome-file>
   </welcome-file-list>
   <error-page>
       <error-code>404</error-code>
       <location>/WEB-INF/views/error/404.jsp</location>
   </error-page>
   <error-page>
       <error-code>500</error-code>
       <location>/WEB-INF/views/error/500.jsp</location>
   </error-page>
</web-app>

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

http://img1.sycdn.imooc.com//climg/5bd66a880001710406870064.jpg

根据报错信息,建议同学检查一下User类中的name属性有没有封装getter和setter方法,增加getter和setter方法以后再试下~

祝学习愉快!

  • twodogegg 提问者 #1
    老师找到原因了,原来是去出的对象和属性名称不对应
    2018-10-29 12:39:29
提问者 twodogegg 2018-10-28 23:05:45
提问者 twodogegg 2018-10-28 22:10:23

=============================================================

错误信息

=============================================================

28-Oct-2018 22:04:36.054 严重 [http-nio-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [UserServlet] in context with path [] threw exception [An exception occurred processing JSP page [/WEB-INF/views/biz/user.jsp] at line [21]


18:         </nav>

19:         <div class="container">

20:             <div class="jumbotron">

21:                 <h1>Hello, ${user.name}!</h1>

22:                 <p>淇℃伅閮藉湪杩欓噷浜? ^_^</p>

23:             </div>

24:             <div class="page-header">



Stacktrace:] with root cause

 javax.el.PropertyNotFoundException: Property [name] not found on type [com.goudan.jdbc.bean.User]

at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260)

at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)

at javax.el.BeanELResolver.property(BeanELResolver.java:347)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:92)

at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)

at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)

at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)

at org.apache.jsp.WEB_002dINF.views.biz.user_jsp._jspService(user_jsp.java:130)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)

at com.goudan.jdbc.servlet.UserServlet.service(UserServlet.java:37)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.goudan.jdbc.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:19)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.goudan.jdbc.filter.UserFilter.doFilter(UserFilter.java:20)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)


一叶知秋519 2018-10-28 16:47:24

同学转发不过去有发生异常信息么?另外,页面有出现报错信息么?建议同学将这些信息也描述一下,方便老师帮助更准确的解答。祝学习愉快!

  • 提问者 twodogegg #1
    嗯~好的老师,这就贴上去,还老烦您看一下
    2018-10-28 22:08:20
  • 提问者 twodogegg #2
    老师,根据报错信息我做检查后确定request请求里面attribute里面是有user对象的,但是在jsp页面取不出来的,导致的报错,是什么原因呀
    2018-10-28 23:04:31
提问者 twodogegg 2018-10-27 12:43:15

http://img1.sycdn.imooc.com//climg/5bd3ec6b0001018d19201041.jpg

这张debug的图片,就是这里出的问题就是找不到问题在哪很无奈的,哭晕死在当场??????

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师