信息如下:
C:\Borland\JBuilder2006\jdk1.5\bin\javaw -classpath "C:\Borland\JBuilder2006\thirdparty\jakarta-tomcat-5.5.9\bin\bootstrap.jar;C:\Borland\JBuilder2006\jdk1.5\lib\tools.jar" "-Dcatalina.home=C:/Borland/JBuilder2006/thirdparty/jakarta-tomcat-5.5.9" org.apache.catalina.startup.Bootstrap -config E:\java\jb2005_chappter15\Tomcat\conf\server8080.xml start
2006-3-20 21:49:07 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2006-3-20 21:49:07 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 547 ms
2006-3-20 21:49:07 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2006-3-20 21:49:07 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.9
2006-3-20 21:49:07 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
java.io.FileNotFoundException: D:\serverLog\log_2006_3.xls (系统找不到指定的路径。)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
at java.io.FileWriter.<init>(FileWriter.java:90)
at bookstore.servlet.SrvStartListener.contextInitialized(SrvStartListener.java:22)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2006-3-20 21:49:08 org.apache.catalina.realm.JAASRealm setContainer
信息: Set JAAS app name Catalina
2006-3-20 21:49:08 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2006-3-20 21:49:08 org.apache.catalina.startup.Catalina start
信息: Server startup in 1734 ms
C:\Borland\JBuilder2006\jdk1.5\bin\javaw -classpath "C:\Borland\JBuilder2006\thirdparty\jakarta-tomcat-5.5.9\bin\bootstrap.jar;C:\Borland\JBuilder2006\jdk1.5\lib\tools.jar" "-Dcatalina.home=C:/Borland/JBuilder2006/thirdparty/jakarta-tomcat-5.5.9" org.apache.catalina.startup.Bootstrap -config E:\java\jb2005_chappter15\Tomcat\conf\server8080.xml start
2006-3-20 21:49:07 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2006-3-20 21:49:07 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 547 ms
2006-3-20 21:49:07 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2006-3-20 21:49:07 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.9
2006-3-20 21:49:07 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
java.io.FileNotFoundException: D:\serverLog\log_2006_3.xls (系统找不到指定的路径。)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
at java.io.FileWriter.<init>(FileWriter.java:90)
at bookstore.servlet.SrvStartListener.contextInitialized(SrvStartListener.java:22)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2006-3-20 21:49:08 org.apache.catalina.realm.JAASRealm setContainer
信息: Set JAAS app name Catalina
2006-3-20 21:49:08 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2006-3-20 21:49:08 org.apache.catalina.startup.Catalina start
信息: Server startup in 1734 ms
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
你的环境中是不是配置log4j的日志输出了?建议先把环境清理一下,再试一试
login.jsp
<%@page contentType="text/html; charset=GB2312" errorPage="error.jsp"%>
<html>
<head>
<title>login</title>
</head>
<body bgcolor="#ffffff">
<form name="form1" method="post" action="/WebModule/loginAction.do"> 用户名:
<input type="text" name="userId"/>
密 码:
<input name="password" type="password">
<input type="submit" name="Submit" value="登录">
</form>
</body>
</html>
error.jsp
<%@page contentType="text/html; charset=GB2312" isErrorPage="true" %>
<html>
<head>
<title>error</title>
</head>
<body bgcolor="#ffffff">抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页
</body>
</html>
fail.jsp
<%@ page contentType="text/html; charset=GB2312" errorPage="error.jsp" %>
<html>
<head>
<title>
fail
</title>
</head>
<body bgcolor="#ffffff">
您输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。
</body>
</html>
welcom.jsp
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>welcome</title>
</head>
<jsp:useBean id="ses_userBean" scope="session" class="bookstore.User"/><body bgcolor="#ffffff">您是
<%=ses_userBean.getUserName()%>,欢迎登录。<br>
</body>
</html>
loginAction.java
package bookstore;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;import java.sql.*;public class loginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
UserActionForm userActionForm = (UserActionForm) form;
Connection conn=null;
try{
conn=DBConnection.getConnection();
PreparedStatement pStat = conn.prepareStatement(
"select username from [user] where username=? and nickname = ?");
pStat.setString(1, userActionForm.getUserId());
pStat.setString(2, userActionForm.getPassword());
ResultSet rs = pStat.executeQuery();
if (rs.next())
{ //密码正确
userActionForm.setUserName(rs.getString(1));
request.getSession().setAttribute("ses_userBean", userActionForm);
return mapping.findForward("success");
}
}
catch (SQLException se)
{
se.printStackTrace();
return mapping.findForward("error");//程序发生异常,转向error.jsp出口
}
finally
{
try
{
if (conn != null)
{
conn.close();
}
}
catch (SQLException ex)
{
ex.printStackTrace();
return mapping.findForward("error");//程序发生异常,转向error.jsp出口
}
}
return mapping.findForward("fail");
}
}User.java
package bookstore;import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import java.text.SimpleDateFormat;
import java.util.Date;public class User
{
private String userId;
private String password;
private String userName; public String getPassword()
{
return password;
} public String getUserId()
{
return userId;
} public String getUserName()
{
return userName;
} public void setPassword(String password)
{
this.password = password;
} public void setUserId(String userId)
{
this.userId = userId;
} public void setUserName(String userName)
{
this.userName = userName;
} /**
* 获取当前时间字串,以yyyyMMddHHmmss格式返回,如20050505010101
* @return String
*/
private static String getCurrDatetimeStr()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(new Date());
}
}
package bookstore;import java.sql.*;
import java.text.*;
import java.util.Date.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.util.Date;public class UserActionForm extends ActionForm {
private String userId;
private String password;
private String userName;
private String loginDatetime; public String getPassword()
{
return password;
} public String getUserId()
{
return userId;
} public String getUserName()
{
return userName;
} public void setPassword(String password)
{
this.password = password;
} public void setUserId(String userId)
{
this.userId = userId;
} public void setUserName(String userName)
{
this.userName = userName;
} /**
* 获取当前时间字串,以yyyyMMddHHmmss格式返回,如20050505010101
* @return String
*/
private static String getCurrDatetimeStr()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(new Date());
} public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
this.userId=null;
this.userName=null;
this.password=null;
this.loginDatetime=null;
}
}
DBConnection.java
package bookstore;import java.sql.*;
import java.util.Properties;public class DBConnection {
public static Connection getConnection()
{
Connection con=null;
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=blog_zt";
String USER="sa";
String PWD="sa";
try
{ Class.forName(CLASSFORNAME);
con = DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
}struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<form-beans>
<form-bean name="userActionForm" type="bookstore.UserActionForm" />
</form-beans>
<action-mappings>
<action name="userActionForm" path="/loginAction" type="bookstore.loginAction">
<forward name="success" path="/welcome.jsp" />
<forward name="fail" path="/fail.jsp" />
<forward name="error" path="/error.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
</plug-in>
</struts-config>web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>WebModule</display-name>
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</jsp-config>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: bookstore.UserActionForm
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.ClassCastException: bookstore.UserActionForm
org.apache.jsp.welcome_jsp._jspService(org.apache.jsp.welcome_jsp:49)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
去掉,试一下
发一个给我吧,[email protected],jb2005或者jb2006的,
都一周了。我也查好多资料了,看不出是什么问题呀!!!!!~
我可以提供一點struts學習資料和幾個例子
{
Pririn}
root cause java.lang.ClassCastException: bookstore.UserActionForm
org.apache.jsp.welcome_jsp._jspService(org.apache.jsp.welcome_jsp:49)显然问题出现在welcome.jsp
找一下,发现了
<jsp:useBean id="ses_userBean" scope="session" class="bookstore.User"/>
这个bean的类型是bookstore.User
再找找LoginAction,发现
UserActionForm userActionForm = (UserActionForm) form;
...
request.getSession().setAttribute("ses_userBean", userActionForm);看懂了吧?
Session中名称为"ses_userBean"的对象,你保存的是UserActionForm类型,而你用的时候当做User类型来用。这就是错误的原因。先发现这一个错,你改了要有错再把错误信息贴上来
<jsp:useBean id="ses_userBean" scope="session" class="bookstore.UserActionForm"/>
这样对吗?
结果如下:
您是 null,欢迎登录。
我的结果是得不到用户名(userid),是空的(null)。我试了第二种方法,结果是到了welcome.jsp,但是得到的是空值,
结果如下:
您是 null,欢迎登录。
假如我用<jsp:useBean id="ses_userBean" scope="session" class="bookstore.UserActionForm"/>输出登录时所填的用户名和密码?为什么都是null(空值)呢?
fail.jsp
</title>
</head>
<jsp:useBean id="ses_userBean" scope="session" class="bookstore.UserActionForm"/>
<body bgcolor="#ffffff">
你输入的用户名是:<%=ses_userBean.getUserid()%>,
密码是:<%=ses_userBean.getPassword()%>
您输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。
</body>
</html>
所以啊,你在action里面不应该把UserActionForm放到Session里面,而是应该创建一个User对象放进去
那么welcome.jsp用<jsp:useBean id="ses_userBean" scope="session" class="bookstore.UserActionForm"/>为什么有可以得到userid的值呢?
那么welcome.jsp用<jsp:useBean id="ses_userBean" scope="session" class="bookstore.UserActionForm"/>为什么有可以得到userid的值呢?