1. 程式人生 > >建立專案,使用Struts和Hibernate等框架出現的異常,以及步步地處理的過程

建立專案,使用Struts和Hibernate等框架出現的異常,以及步步地處理的過程

[使用MyEclipse,JDK1.7]

我招誰惹誰了????建立過那麼多次專案,都沒有報錯過,怎麼剛完成個"銷售管理系統",我回來做簡單的上機練習,就出了這麼多之前未預見過的?!?!?!?(學識淺薄,見識短吶)

好吧,"沒有解決不了的問題,只有問題不會解決"!!!!!

嚴重: Servlet.service() for servlet jsp threw exception
The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]
	at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)
	at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44)
	at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48)
	at org.apache.jsp.login_jsp._jspx_meth_s_005fform_005f0(login_jsp.java:133)
	at org.apache.jsp.login_jsp._jspService(login_jsp.java:102)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)

新建個Web Project,在lib資料夾下加入Struts2的struts2-core-2.2.1.jar和其他的jar包,然後接著寫了login.jsp,使用Struts2標籤庫,

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"  %>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>使用者登入</title>
    <script type="text/javascript">
    	function check(){
    	//需要引入JS
			var uN=$("#userName").val();
			var pW=$("#pwd").val();
			if(uN==""||pW==""){
				alert("請輸入賬戶名或密碼!!!");
				return false;
			}
			return true;
    	}
    </script>
  </head>
  
  <body>
  
    <s:form action="" method="post" onsubmit="return check();">
    	<s:textfield name="user.userName" id="userName" placeholder=" 輸入賬號" label="登入賬戶"/>
    	<s:password name="user.password" id="pwd" placeholder=" 輸入密碼"  label="登入密碼"/>
    	<s:submit   value="Submit"></s:submit>
    </s:form>
  </body>
</html>

然後釋出Tomcat6,接著執行,就會報了上面的異常,(我沒有寫struts.xml,沒加Hibernate.cfg.xml等),看來"心急吃不了熱豆腐"!!!!

改:加入配置檔案struts.xml和配置web.xml,在其中新增struts2的過濾器,若只加入struts.xml ,則

所以還要在web.xml中加上這些程式碼(該文章裡有類似內容Struts 2入門【struts.xml的DTD驗證不起作用的解決辦法】)

<filter>  		
 <filter-name>struts</filter-name>  		
 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 <!-- Strutsjar包裡面的一個類,相當於中央控制器-->  
 </filter>  
 <filter-mapping>  		
 <filter-name>struts</filter-name>  		
 <url-pattern>/*</url-pattern>
 <!-- 過濾所有請求,實際開發中一般過濾.action請求 -->  
 </filter-mapping>

原文:https://blog.csdn.net/Hw2930277377/article/details/83002395 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

接著,,,還是錯???!!!!!那就是你的過濾器配置錯誤,你要自己去對比下

 反正到這裡,使用Struts2標籤庫的login.jsp一定能顯示出來的!!!

接著我加入Hibernate框架,有生成hibernate.cfg.xml和HibernateSessionFactory.java,接著基本的我都加上對應程式碼了,然後執行,還報錯,MMP,T_T,,,,,,,能不能 讓我安安靜靜做個美少女?哼?(當然我也去百度過,InvocationTargetException為反射異常:InvocationTargetException異常分析微妙的一個異常資訊java.lang.reflect.InvocationTargetException啟動Tomcat出現“Bad version number in .class file (unable to load class XXX)”解決java.lang.reflect.InvocationTargetException這種錯怎麼解決Java異常處理之InvocationTargetException(反射異常)

根據解釋清晰程度,排的序,可以點開看看,若有幫助,再好不過,我同學也遇到這個問題,文章裡有說過“可能少了jar包”,他解決後,還真少了這幾個jar包

我沒有jdom包也沒報錯,但是Hibernate3.1核心包,是配置Hibernate框架時自動加的,若沒有加到,可以在這裡加

自己選擇對應的Hibernate_core包】

)

十一月 28, 2018 2:10:34 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
警告: an exception occured while executing the prefix method
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil.invokePrefixMethod(PrefixMethodInvocationUtil.java:121)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:236)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:261)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/Session
	at qiu.comm.BaseDAO2.queryUsersByHQL(BaseDAO2.java:45)
	at qiu.action.UsersAction.validateList(UsersAction.java:35)
	... 61 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.Session
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	... 63 more

我的後臺程式碼片段: 

——UsersAction.java
private BaseDAO2 base=new BaseDAO();
private List<UsersVo> uList;
private UsersVo user;
public void validateList() {
		
		try{	
			uList=base.queryUsersByHQL(user.getUserName(),user.getPassword());
			if(uList.size()<=0){
				addFieldError("user.userName", "請註冊賬號!!!!");
			}
		}catch(Exception e1){
			e1.printStackTrace();
		}
}
public String list(){
		uList=base.queryByHQL("UsersVo");
		return INPUT;
}
——BaseDAO.java
public List queryUsersByHQL(String userName,String pwd){
		Session session =HibernateSessionFactory.getSession();
		//清空快取
		session.clear();
		Transaction tx = session.beginTransaction();
		List list=null;
		Query query=null;
		try{
		    query = session.createQuery("from UsersVo s where s.userName=:userName and s.password=:password");
		    query.setString("userName", userName);
		    query.setString("password", pwd);

			list = query.list();
			tx.commit();
			session.close();
		}catch(Exception e){
			tx.rollback();
			e.printStackTrace();
		}
		return list;
	}	
}

JSP:      

Struts.xml:

Hibernate.cfg.xml:

        <property name="connection.username">sa</property>
        <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=ExamTestQ</property>
        <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        
        <property name="show_sql">true</property>
        <property name="format_sql">false</property>
        
    	<mapping resource="qiu/bean/DepsVo.hbm.xml"/>
    	<mapping resource="qiu/bean/UsersVo.hbm.xml"/>

我就對一對報異常的包檔案,看存在不,存在呀!!好呀,接著我在HibernateSessionFactory裡設斷點,出現下面這個問題,相對更容易解決哎!Oh,Boy!(之前,還是用SQLServer資料庫的時候,怎麼,怎麼沒發生過,,,,,,哎呀勒~)

org.hibernate.exception.JDBCConnectionException: Cannot open connection
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
	at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129)
	at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
	at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290)
	at qiu.comm.BaseDAO2.queryUsersByHQL(BaseDAO2.java:49)
	at qiu.action.UsersAction.validateList(UsersAction.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil.invokePrefixMethod(PrefixMethodInvocationUtil.java:121)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:236)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:261)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 通過埠 1433 連線到主機 localhost 的 TCP/IP 連線失敗。錯誤:“Connection refused: connect。請驗證連線屬性,並檢查 SQL Server 的例項正在主機上執行,且在此埠接受 TCP/IP 連線,還要確保防火牆沒有阻止到此埠的 TCP 連線。”。
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
	at java.sql.DriverManager.getConnection(DriverManager.java:571)
	at java.sql.DriverManager.getConnection(DriverManager.java:187)
	at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
	... 67 more
十一月 28, 2018 2:23:20 下午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
	at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
	at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:753)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:506)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)

這明顯地連線不了資料庫,先確定"是否啟動對應資料庫的服務",我的早已啟動了!!!

那接著看:是否"TCP/IP已禁用",在Window或Window旁的小娜搜尋--->找"SQLServer配置管理器"(我下載的是2014版的),

我的開啟後,"MMC無法建立管理單元"

我百度"mmc無法建立管理單元怎麼辦",說有防火牆阻擋,我立馬全關(全關閉,有時候360安全中心會幫你開的),反正我沒成功(因為要啟動cmd,查詢一個檔案,在之前我根據路徑找那檔案,不存在呀,何況cmd查詢並啟動呢,但是還是試了cmd查詢並啟動,照樣失敗),不過這個不知道有沒有效,你們要是不想解除安裝,就試試這個好了!

所以我粗暴地"解除安裝",再安裝回來,能夠開啟"SQLServer配置管理器",(還會報TCP/IP連線異常問題時)啟用TCP/IP協議,最好開啟,全部看一遍,確保"全部啟用(矩形紅框的都是要注意的,IP地址都要確保全部已啟用!!!)",

當然最好還要:

將它們的"啟動模式"改"手動",不會一開機就加重電腦負擔等等,若要連線資料庫,手動啟動"框內這三個"就可以了,

迴歸話題,解決了該問題,原來的InvocationTargetException異常,改

說真的,我很無奈!!!我的其他專案,也是這麼寫,怎麼沒報錯,,,,這????!!!

然後翻翻原來的程式碼:

 接著,                                 

我寫完"使用者登入",繼續寫"使用者註冊",要聯絡"DepsVo",使用下拉框形式顯示Deps的值,所以點選"註冊",先經過"UsersAction的init()"再轉向userAdd.jsp,接著又報異常 :

%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: Could not read mappings from resource: /qiu/bean/DepsVo.hbm.xml
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
	at qiu.bean.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:67)
	at qiu.bean.HibernateSessionFactory.getSession(HibernateSessionFactory.java:52)
	at qiu.comm.BaseDAO2.queryByHQL(BaseDAO2.java:25)
	at qiu.action.UsersAction.init(UsersAction.java:36)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.MappingException: Could not parse mapping document in input stream
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:431)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
	... 74 more
Caused by: org.dom4j.DocumentException: Connection reset Nested exception: Connection reset
	at org.dom4j.io.SAXReader.read(SAXReader.java:484)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:422)
	... 75 more

 此時重啟Tomcat,後臺沒報錯(其實我是先add"上面講到的jdom"包,再重啟Tomcat,成功並未報錯,此時remove這個jdom.jar,後臺也沒有報錯呀!!!所以我想,應該是Tomcat沒有及時更新快取)

再接著,寫完”註冊”程式碼,就從“登入”開始,在“登入介面”,使用者名稱和密碼“填寫資料庫裡不存在的值”,就是想成功後接著點選“註冊”,到“註冊介面”,但是此時遇到這異常(下面緊跟有我的對應程式碼)

十一月 29, 2018 2:13:18 下午 org.apache.catalina.core.ApplicationDispatcher invoke
嚴重: Servlet.service() for servlet jsp threw exception
tag 'select', field 'list', name 'user.depId': The requested list key '#request.dList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
	at org.apache.struts2.components.Component.fieldError(Component.java:237)
	at org.apache.struts2.components.Component.findValue(Component.java:358)
	at org.apache.struts2.components.ListUIBean.evaluateExtraParams(ListUIBean.java:80)
	at org.apache.struts2.components.Select.evaluateExtraParams(Select.java:105)
	at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:856)
	at org.apache.struts2.components.UIBean.end(UIBean.java:510)
	at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
	at org.apache.jsp.userAdd_jsp._jspx_meth_s_005fselect_005f0(userAdd_jsp.java:333)
	at org.apache.jsp.userAdd_jsp._jspx_meth_s_005fform_005f0(userAdd_jsp.java:186)
	at org.apache.jsp.userAdd_jsp._jspService(userAdd_jsp.java:129)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:159)
	at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
	at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)
——UsersAction
    //賦值於下拉框
    public String init(){
		dList=base.queryByHQL("DepsVo");
		return INPUT;
    }

    HttpServletRequest request=ServletActionContext.getRequest();
	HttpSession session =request.getSession();

    //因為校驗的錯誤狀態ActionError會在session範圍內儲存,
    //導致每次的Action請求會直接!!!!!跳轉到input檢視!!!!
    //即 : 只要遇到了addFieldError,自動return input,不管你在addFieldError下一行寫了什麼
	public void validateList() {
		HttpServletResponse response=ServletActionContext.getResponse();
		if(user!=null){
			session.setAttribute("user", user);
		}
		user = (UsersVo)session.getAttribute("user");
		try{	
            //若無session則重定向到login頁面
			if(user==null){
				response.sendRedirect("login.jsp");
			}
			uList=base.queryUsersByHQL(user.getUserName());
			if(uList.size()==0){
				addFieldError("user.userName", "請註冊賬號!!!!");
			}else{
                //使用者的密碼有誤的驗證
			    if(!uList.get(0).getPassword().equals(user.getPassword())){
				    addFieldError("user.userName", "密碼有誤,請重新輸入!!!!!!!!!");
			    }
		    }
		}catch(Exception e1){
			e1.printStackTrace();
		}
	}
	public String list(){
		int did=uList.get(0).getDepId();
		try{			
            //利用離線查詢DetachedCriteria
			DetachedCriteria dc=DetachedCriteria.forClass(UsersVo.class);
            //根據部門Id查詢,這樣就實現了,使用者只看得到同部門的同事了
			dc.add(Restrictions.eq("depId", did));
			dc.setProjection(null);
			uList=base.queryByDetach(dc);
		}catch(Exception e){
			e.printStackTrace();
		}
		return "list";
	}
//註冊時驗證是否"使用者名稱已存在"
public void validateAddUser(){
		DetachedCriteria dc=DetachedCriteria.forClass(Users_TestVo.class);
		dc.add(Restrictions.eq("userName", user.getUserName()));
		uList=base.findAllByDetach(dc);
		try {
		    if(uList.size()>0){
			 request.setAttribute("msg","使用者名稱已存在,請重新輸入使用者號!!!!!!!!!!");
			 request.getRequestDispatcher("/login.jsp").forward(request, response);
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}
}
public String addUser(){
		base.save(user);
		return INPUT;
}

——BaseDAO
//儲存操作
public void save(Object obj){
		Session session = HibernateSessionFactory.getSession();
		session.clear();
		Transaction tr=session.beginTransaction();
		try{
			session.save(obj);
			tr.commit();
		}catch(Exception e){
			tr.rollback();
			e.printStackTrace();
		}
}
//查詢某表的全部資訊
public List queryByHQL(String className){
		Session session = HibernateSessionFactory.getSession();
		//清空快取
		session.clear();
		Transaction tx = session.beginTransaction();
		List list=null;
		try{
			String sql = " from "+className;
			Query query = session.createQuery(sql);
			list = query.list();
			tx.commit();
			session.close();
		}catch(Exception e){
			tx.rollback();
			e.printStackTrace();
		}
		return list;
}
//使用QBC的離線查詢,實現統一的列表查詢函式
public List queryByDetach(DetachedCriteria dc){
		Session session=HibernateSessionFactory.getSession();
		session.clear();
		Transaction tr=session.beginTransaction();
		List list=null;
		try{
			Criteria cr=dc.getExecutableCriteria(session);
			list=cr.list();
			tr.commit();
		}catch(Exception e){
			tr.rollback();
			e.printStackTrace();
		}
		return list;
}
//帶條件查詢UsersVo表
public List queryUsersByHQL(String userName){
		Session session =HibernateSessionFactory.getSession();
		//清空快取
		session.clear();
		Transaction tx = session.beginTransaction();
		List list=null;
		Query query=null;
		try{
			query = session.createQuery("from UsersVo s where s.userName=:userName");
			query.setString("userName", userName);
			list = query.list();
			tx.commit();
			session.close();
		}catch(Exception e){
			tx.rollback();
			e.printStackTrace();
		}
		return list;
}

————我的add.JSP程式碼:
<%@taglib prefix="s" uri="/struts-tags" %>
<script type="text/javascript">
    	function check(){
    		// 不能var pw=$("#pwd").val();要有某某js檔案
    		var pw=document.getElementById("pwd").value;
    		var pw2=document.getElementById("pwd2").value;
    		var userName=document.getElementById("userName").value;
    		var job=document.getElementById("job").value;  		
			if(userName===null){
				alert("請確認登入名稱!!!");
				document.getElementById("userName").focus();
				return false;
			}
			if(job===null){
				alert("請確認職位名稱!!!");
				document.getElementById("job").focus();
				return false;
			}
			if(pw!=pw2){
				alert("請確認密碼!!!確認密碼與登入密碼必須一致");
				document.getElementById("pwd").focus();
				return false;
			}
			return true;
    	}
    </script>
  </head>
  <body>
  	<s:form action="uAction!addUser.action" method="post" onsubmit="return check();">
        <s:div align="center">
   			<FONT style="color:red;">${msg}</FONT>
   		</s:div>	    
        <s:textfield label="使用者名稱" name="user.userName" type="required" id="userName" cssStyle="align:'right';"></s:textfield>
	    <s:password label="登入密碼" name="user.password" id="pwd"></s:password>
	    <s:password label="確認密碼" id="pwd2"></s:password>
	    <s:textfield label="身份證號" name="user.cardId" id="cardId"></s:textfield>
	    <s:select name="user.depId" list="#request.dList" listKey="depId" listValue="depName" label="城市" headerKey="0" headerValue="---請選擇城市---" emptyOption="true"></s:select>
	    <s:textfield label="職位" name="user.job" id="job" type="required"></s:textfield>
	    <s:submit value="Submit"></s:submit>
    </s:form>
  </body>
</html>

————我的login頁面程式碼
<%@taglib prefix="s" uri="/struts-tags" %>
<title>登入</title>
<script type="text/javascript">
  function check(){
//需要引入JS( jquery-1.4.2.min.js ),不過引入IncludeJS.jsp頁面,也可以的,但是裡面沒有jquery-1.4.2.min.js
		var uN=$("#userName").val();
		var pW=$("#pwd").val();
		if(uN==""||pW==""){
			alert("請輸入賬戶名或密碼!!!");
			return false;
		}
		return true;
  }
  </script>
  </head>  
  <body>
    <a href="uAction!init.action">註冊</a>
    <s:form action="uAction!list.action" method="post" onsubmit="return check();">
    	<!-- 預設黑色,在後臺addFieldError的對應name的框的上面,可以沒有這個
    	<s:fielderror></s:fielderror>
    	 -->
        <s:div align="center">
   			<FONT style="color:red;">${msg}</FONT>
   		</s:div>
    	<s:textfield name="user.userName" id="userName" placeholder=" 輸入賬號" label="登入賬戶"/>
    	<s:password name="user.password" id="pwd" placeholder=" 輸入密碼"  label="登入密碼"/>
    	<s:submit   value="提交"></s:submit>
    </s:form>
  </body>
</html>
————我的Struts.xml(與上面有些不同,就因為這一改,發現了這個問題)
<action name="uAction" class="qiu.action.UsersAction">
		<result name="input">/useradd.jsp</result>		 
		<result name="login">/login.jsp</result>
		<result name="list">/usersList.jsp</result>
</action>

 錯就錯在,我忘記了這個:,所以找到struts.xml裡的input,居然轉向:useradd.jsp,當然會出錯,因為add裡有下拉框,它需要值呀!!!所以:

(Struts配置裡)
<action name="uAction" class="qiu.action.UsersAction">
			<!-- 
			<result name="input" type="redirectAction">uAction!init.action</result>
			 -->
			<result name="input">/login.jsp</result>
			<result name="add">/userAdd.jsp</result>
			<result name="list">/usersList.jsp</result>
</action>
(UAction裡)
public String init(){
		dList=base.queryByHQL("DepsVo");
		return "add";
}

然後要有的都有了:(沒有報錯)

下面這個異常,因為在使用"Struts2標籤庫的s:select不得當"時出現的 !!!(上面的s:select,才是正確使用[list、listKey、listValue])

十一月 28, 2018 9:07:39 下午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet default threw exception
java.lang.Error: Unresolved compilation problems: 
	DepsVo cannot be resolved to a type
	DepsVo cannot be resolved to a type
	dList cannot be resolved
	DepsVo cannot be resolved to a type
	dList cannot be resolved


	at qiu.action.UsersAction.<init>(UsersAction.java:13)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
	at java.lang.Class.newInstance(Class.java:379)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:130)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:161)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
	at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
	at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
	at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
	at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
	at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:745)

 

 也這裡報的異常:(前提:每次add,我要先進去valAdd()方法驗證使用者名稱是否存在,若存在就return"add",所以Struts配置檔案的result是這樣的,轉到add()方法,然後呼叫base.save(user),加入資料庫表!!!但是接著我報了"空指標異常",所以我加上session.setAttribute,到時在add中加上這個,再接著,我就報了"IndexOutOfBoundsException"異常,就是因這導致,你要想呀[或許你已經知道了,若如此請忽略這些],你是要Add呀,那麼"驗證完使用者名稱是不存在的,那就應該Add到資料庫表的呀",所以UList取值一定"無記錄或無值",即uList.size==0,那麼uList.get(0)是不是就會出現"索引、下標越界"!!!!)

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    java.util.ArrayList.rangeCheck(ArrayList.java:635)
    java.util.ArrayList.get(ArrayList.java:411)
    test.action.UsersAction.valAdd(UsersAction.java:96)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)

改:(我的"Input"是轉向/login.jsp)

 接著使用分頁技術,報錯了:(引數沒有控制好)

org.hibernate.exception.GenericJDBCException: could not execute query
	at org.hibernate.exception.SQLStateCo