棘手呀,页面转发不过去jsp页面
进
我排查了一遍,就是这个转发出了问题,但是是在找不出问题在哪?还请老师指导。
=================================================================
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>
</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>
正在回答
根据报错信息,建议同学检查一下User类中的name属性有没有封装getter和setter方法,增加getter和setter方法以后再试下~
祝学习愉快!
=============================================================
错误信息
=============================================================
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)
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星