新手在jsp網站開發中所遇到的問題匯總

來源:互聯網
上載者:User

1.通過響應onclick方法來跳轉並傳參數,在另一個頁面中用reque.getparameter("user")便能得到該參數的值。
onclick="location.replace('userprivate.jsp?user=<%=rs.getString("gid")%>')"
其中rs是我尋找資料庫的傳回值。

 

 

2.用javascript來彈出有確定和取消的提示框:

<script type="text/javascript">
function test(){
  var k=window.confirm("你確定要修改或刪除該記錄");
  if(k){
    event.returnValue=true;
  }
  else{
    event.returnValue=false;
  }
} </script>

<td ><a href="groupdelete.jsp?gdelete=<%=rs.getString("gid")%>"   onclick="test()" >刪除</a></td>

在該運算式中點擊“刪除”時會彈出詢問框,當選擇“確定”時會跳轉到href指向的連結,此時test()返回true,點擊“取消”時test()
返回false所以頁面不會跳轉。gdelete可以是任意的字串,比如gdelet="hello"。
在< a href="/good.jsp"

 

  3.javascript取得<form name="registerform"...>  <input name="password" ...>   <input type="submit" name="Submit" value="提交" onclick="test()"/></form>中的各個input的value值:

registerform是form的name,password是input的name,value是input對應的value,
test()在最後一個submit按鈕中調用,當test返回true是就提交表單,否則給出提示資訊,不會提交表單。
<script type="text/javascript">
function test(){
 
    if(document.registerform.password.value=="")
     {
 alert("密碼不可為空!");
 event.returnValue=false;
 return;
      }
     if(document.registerform.password.value!=document.registerform.confirmpassword.value=="")
     {
 alert("兩次輸入的密碼密碼不相同!");
 event.returnValue=false;
 return;
      }
}
</script>

 

4.為資料庫增加一列: alter table userorder add personnum int;

 

><u><a href="storeuserorder.jsp?user=<%=request.getParameter("user")%>
            &starttime=<%=request.getParameter("starttime")%>
            &endtime=<%=request.getParameter("endtime")%>
            &personnum=<%=request.getParameter("personnum")%>
             &totalmoney=<%=totalprice%>
             &textarea=<%%>">確定並提交訂單     </a></u>

 

5.

JSP與 servlet之間的傳值有兩種情況:JSP -> servlet, servlet -> JSP。
通過對象 request和 session (不考慮 application)完成傳值。

一、JSP -> servlet
JSP頁面有3種方法向 servlet傳值: form表單、URL 、其他

<!-- JSP page -->
...
<%......
 session.setAttribute("testSession","Hello session");
 reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">click me</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
 <input name="username" type="test" />
 <input type="submit" value="submit">
</form>
...

 

5.1、對於該JSP頁面 form表單的內容,如 <input>標籤,在 servlet可用 request.getParameter("username");擷取。
5.2、URL:比如這裡的 <a>標籤的 href屬性與 <form>標籤的 action屬性的值 "JspServlet?action=toServlet",在 servlet同樣用 request.getParameter("action")擷取;所要注意的是這裡的 url 要和 servlet在web.xml裡的 <url-pattern>標籤的路徑所對應。這部分後面會提到。
5.3、java片段代碼,servlet只能接到 session.setAttribute("testSession","Hello session")的內容,而接不到 request的內容。在 servlet裡用 request.getSession().getAttribute("testSession")擷取 session內容。

6、Servlet
6.1、關於 servlet,首先要提到它在 web.xml裡的註冊內容,如

 <servlet-name>JspServlet1</servlet-name>
 <servlet-class>com.demo.JspServletDemo</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>JspServlet1</servlet-name>
 <url-pattern>/JspServlet</url-pattern>
 </servlet-mapping>

 <servlet-name>JspServlet2</servlet-name>
 <servlet-class>com.demo.JspServletDemo</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>JspServlet2</servlet-name>
 <url-pattern>/admin/JspServlet</url-pattern>
 </servlet-mapping>

假如 project name 是 jsp2servlet,則該 project根目錄的 Context是 /jsp2servlet,在地址欄裡顯示是

http://localhost:8080/jsp2servlet/;

在 project 根目錄下有 admin目錄,對應的 Context是/admin/jsp2servlet,在地址欄裡顯示是

http://localhost:8080/jsp2servlet/admin,

在這兩個目錄下的 jsp 都想轉到 com.demo.JspServletDemo類做處理,這時的 url需要在 web.xml註冊兩次。
1)在 http://localhost:8080/jsp2servlet/ 目錄下的 jsp 頁面 JspServlet1,url應寫為 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目錄下的 jsp 頁面訪問 JspServlet2,url應寫為 "admin/JspServlet"

6.2、在 servlet直接用 request對象,得到發送來的請求內容;用 request.getSession(),得到 session對象,從而得到會話內容。

這裡的 request.getSession()的參數為 boolean 類型,該方法意思可理解為:

session可以認為是每一個IE進程對應一個會話(新開一個IE進程就可以對應兩個會話的),getSession都是返回目前使用者的會話對象,參數的區別在於:
參數為true (預設),則如果“目前使用者的會話對象”為空白(第一次訪問時)則建立一個新的會話對象返回;
參數為false,則如果“目前使用者的會話對象”為空白,則返回 null (即不自動建立會話對象)。

利用這個方法可以判斷 session是否到期,如下:

if(request.getSession(false)==null)
 System.out.println("Session has been invalidated!");
else
 System.out.println("Session is active!");
7、Servlet -> JSP
從 servlet轉到 jsp不外乎兩種方法,重新導向 和 url轉寄

7.1、重新導向 ( Redirect):是路徑的跳轉,內容和 url都改變。不允許帶 request參數( session參數可以),即不允許在 servlet裡給 request對象使用setAttribute方法傳給下一頁面。在 servlet裡使用 response.sendRedirect(url) 方法。注意這裡的 url前不帶斜線 /,如 response.sendRedirect(”test.jsp“)

7.2、url轉寄 ( Forward):是頁面的跳轉,頁面內容發生改變,url不變。可以帶 request和 session參數。在 servlet裡使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而這裡的 url前需要帶斜線 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request,
response)
 在servlet中用 request.setAttribute("sequence", sequence);設定sequence的值,在JSP中用order_num=request.getAttribute("sequence").toString();來取得相應的值。

8.永遠不要再JSP中用<%! %>來聲明全域變數,因為這些變數在跳轉到下一個頁面時不會被重設,這樣就會形成累加。
9.用dreamweaver做的JSP檔案可能存在路徑的問題,只要在JSP檔案中加入:
(1)在JSP開頭加入
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
(2)在JSP的head中加入:<base href="<%=basePath%>">

10.由於servlet在運行時只是載入一次,所以對資料庫連接的操作不能定義成static,要在沒次操作時都重新去串連資料庫,否則就會出現在第一次正確操作後第二次操作就會出錯。
11.資料庫查詢後的結果集儲存的是相應項的索引,索引在沒有取出相應項的值之前不能刪除該行也不能關閉跟資料庫的連結,否則就會出現opration not allowed after ResultSet have been closed;

 

12.mysql資料庫表的匯入和匯出:
1.資料匯入:
從cmd進入mysql安裝目錄下的bin,然後輸入以下命令就能匯出表:
mysqldump -u root -p test -d > d:/test.sql    其中test為要匯出資料庫名字。d:/test.sql    為匯出檔案放置的位置以及檔案名稱
2.資料匯出:
同樣輸入以下命令就能將表匯入(你只需要執行這一句就行了)
mysql -u root -p test<d:/test.sql      其中test為要匯入資料庫名字。d:/test.sql    為匯入檔案放置的位置以及檔案名稱

這些都是我前段時間做網站開發幕後處理程式時所遇到的主要問題的解決方案,希望能對新手有協助。

 

 

QQ:772319357

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.