初次使用java進行web開發的一些問題

由於一些不可描述的原因,第一次參加了學校的服務外包比賽並做後臺的工作,也是第一次做web,有一種剛學會開車就要上高速的趕腳。前後一個月的時間,學到了一點。下面來總結一些問題還有一些個人的感想。


項目主要使用JSP+Servlet+JavaBean(真的有點繁瑣)開發社區家政服務系統,包括居民對服務的預約、服務商的訂單處理等。接下來是遇到的幾個問題


1.後臺獲取JSP頁面中URL/表單的參數是亂碼

JSP頁面代碼如下:

<a target="_self" href='${pageContext.request.contextPath}/serviceAction?id=保潔'>預約</a>
<form action="../userorderAction" method="get" name="myform">
<input type="text" name="username" value="姓名" />
</form>


上述情況下,取到的id和value均爲亂碼

具體原因:對於表單中post方式提交的數據,只要在接受的頁面中設置request.setCharacterEncoding("要轉換成的編碼"),即可對客戶端請求進行重新編碼;

對於URL提交的數據和表單中get方式提交的數據,上述方法行不通,因爲在Tomcat中,默認情況下使用ISO-8859-1對URL提交的數據和表單中get方式提交的數據進行重新編碼(解碼)

解決方法:1)更改tomcat的配置文件

2)轉換String name=new String(request.getParameter("id").getBytes("ISO-8859-1"), "要轉換成的編碼");

2.關於表單提交的問題

1)

 <input type="text" name="sname" value="XXXX"  disabled />
當文本框的屬性爲disabled時,不可被編輯,同時在提交時也無法傳值,更改爲readonly即可


2)多個表單提交到同一個servlet中

<pre name="code" class="html"><form  action="" method="get" name="myform">
 <input type="hidden" name="type" value="1" />
</form>

<form  action="" method="get" name="myform">
 <input type="hidden" name="type" value="2" />
</form>




通過設置表單隱藏項,相同的name,對取得t的request.getParameter("type")進行判斷,處理不同的表單。

同理,對於同一表單的不同按鈕提交到同一個servlet中,設置相同的name不同的value值

<pre name="code" class="html"><input type="submit" name="id" value="受理" />
<input type="submit" name="id" value="完成" />



3.對JSTL遍歷得到的數據進行批量處理

JSP頁面顯示如下:

頁面代碼如下:

<c:forEach var="company" items="${List3}" varStatus="s">
 <tr>
   <td><input type="checkbox" name="checkbox"  value="${s.index}" />
   </td>
   <td>${company.num}</td>
   <td>${company.name}</td>
   <td>${company.userAdd}</td>
   <td>${company.sdate}</td>
   <td>${company.phone}</td>
   <td>${company.sname}</td>
   <td>${company.price}</td>
   <td>${company.orderstate}</td>
   <td>${company.orderscore}</td>
   <td>${company.orderdate}</td>
  </tr>
</c:forEach>
將集合的序號作爲每一個複選框的值

 String[]  checkbox = request.getParameterValues("checkbox");  //將複選框的值存入數組中
      for(int i=0;i<checkbox.length;i++){              //遍歷得到選中的值,一一處理
	int n=Integer.parseInt(checkbox[i]);  //轉換爲int
		
	int ordernum=orderList.get(n).getOrdernum(); //得到選中的 訂單編號 ,orderList與頁面中的 List3對應 
	String state=orderList.get(n).getOrderstate();  /訂單執行狀態
        //再得到其他的值,進行相應的處理 .......
  }


4.java web開發依賴於web服務器,所有上傳的文件都會存儲在web服務器的目錄下:例如Tomcat在/tomcat安裝路徑/webapps/工程名/(自己創建的路徑)  下,數據庫存儲的地址是文件相對web服務器的路徑。上傳到web服務器的文件,當重新部署發佈的時候,程序啓動發現圖片不見了,造成這個問題的原因正是重新部署發佈時,原來的文件已經被刪除,所以需要再次上傳圖片就可以正常顯示了。

eclipse運行web項目後, 默認保存到 workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps


5.獲取頁面表單name屬性的對象

<pre name="code" class="java"> Enumeration<String> ss = request.getParameterNames();
		 
        while (ss.hasMoreElements()) {
	  System.out.println(ss.nextElement());
}



6."../"代表上級目錄,request.getContextPath(),${pageContext.request.contextPath} 用於獲取根目錄


7.整體設計遠大於代碼實現,命名方式也很重要


8.web.xml文件配置錯誤將會導致Tomcat啓動報錯


9.servlet間的相互跳轉

response.sendRedirect("serviceorderAction");
response.sendRedirect("serviceorderAction?id="+cname); //帶參數

10.分層的思想

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        轉眼就要大四了,一個半月後的去路還沒想通,三年前當我拿到物理系通知書的時候,打死都想不到現在會在寫代碼。也許是因爲在杭州這座城市,也許是因爲身在理學院,不知道能在這條路上走多久,但是走一走也就知道了。


        路漫漫其修遠兮,吾將上下而求索。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章