蘇州培訓網(wǎng) > 蘇州JAVA培訓機構 > 蘇州其然軟件開發(fā)培訓
首頁 培訓網(wǎng) 最新資訊 熱門問答

蘇州其然軟件開發(fā)培訓

13013833891 免費試聽

您當前的位置: 蘇州IT認證培訓 > 蘇州JAVA培訓 > 張家港java在哪培訓

張家港java在哪培訓_JAVA培訓

¥詳詢

班制:周末班

蘇州其然軟件開發(fā)
上課(咨詢)地址:蘇州市昆山市震川西路111號名仕大廈
報名咨詢 預約試聽
課程介紹
張家港java在哪培訓
其然IT 教育師資

趙艷敏高級講師

從事設計行業(yè)多年,有著豐富的設計和動畫制作經(jīng)驗。曾參與中國電信天翼 手機網(wǎng)及天翼手機DIY等多個項目的設計,動畫,及As開發(fā)。項目經(jīng)驗豐富。曾在卡酷動畫衛(wèi)視下屬公司擔任高級動畫師一職,參與多部動畫片的制作 。對動畫也有較高的造詣。

精通Flash、After Effects、Photoshop、Illustrator、ActionScript 2.0/3.0、Edius、CoolEdit、Axure RP、DIV CSS等相關技術。

講課有自己的風格,思維活躍,條理清晰講課注重細節(jié),由簡入繁。本著以 學生學會為目的,更注重理論與實踐相結合。

張家港java在哪培訓

Java工程師就業(yè)前景

張家港java在哪培訓

Java工程師就業(yè)前景

2015年,在美國、加拿大、澳大利亞、新加坡等發(fā)達國家和中等發(fā)達國家, JAVA軟件工程師年薪均在4—15萬美金,而在國內,JAVA軟件工程師也有極好的工作機會和很高的薪水。

在未來5年內,合格軟件人才的需求將遠大于供給。JAVA軟件工程師是目前 國際高端計算機領域就業(yè)薪資非常高的一類軟件工程師。

一般情況下的JAVA軟件工程師是分四個等級,從軟件技術員到助理軟件工程 師,再到軟件工程師,**后成為高級軟件工程師。

根據(jù)IDC的統(tǒng)計數(shù)字,在所有軟件開發(fā)類人才的需求中,對JAVA工程師的需 求達到全部需求量的60%—70%。同時,JAVA軟件工程師的工資待遇相對較高。

通常來說,具有3—5年開發(fā)經(jīng)驗的工程師,擁有年薪15萬元是很正常的一個 薪酬水平。80%的學生畢業(yè)后年薪都超過了8萬元。

根據(jù)專業(yè)數(shù)據(jù)分析,由于我國經(jīng)濟發(fā)展不均衡因素,JAVA軟件工程師工資待 遇在城市之間的差異也較大,一級城市(如北京、上海等),初級軟件工程師的待遇大概在4000-6000之間,中級軟件工程師的待遇在6000—8000之間, 而高級軟件工程師的待遇基本破萬。

全 新升級企業(yè)需求的Java課程


張家港java在哪培訓

全新升級企業(yè)需求的Java課程

歷經(jīng)16年累計10余萬Java學員。打造專業(yè)的課程體系,值得你的信賴

Java基礎

深入解析Java基礎,直擊面試常見問題。——184課時

數(shù)據(jù)庫

及Web前端技術

包含主流Oracle和MySQL數(shù)據(jù)庫,先進的Web前端技術,熱門的JS語言 ——160課時

Java Web

開發(fā)及服務端框架

定制開發(fā)企業(yè)級框架,教授Spring技術核心,企業(yè)開發(fā)部署環(huán)境,規(guī)范代碼 開發(fā)流程及文檔——176課時

綜合項目實戰(zhàn)

飛揚小鳥、飛機大戰(zhàn)、俄羅斯方塊、T-DMS數(shù)據(jù)采集項目、T-netctoss項目 、云筆記系統(tǒng)——136小時2W代碼量

搭建自己網(wǎng)站

16小時課程實戰(zhàn)演練

——企業(yè)扶持

JSP Servlet培訓班作業(yè)管理系統(tǒng)[13] -使用基于Action的后端(用戶登錄為例)


>

上一篇講完了不止于CRUD的設計,本篇就在新設計的基礎上實現(xiàn)用戶登錄,在實現(xiàn)之前,貓哥先放一張數(shù)據(jù)庫結構的截圖(之前的設計竟然忘了學生選課表student_lesson,好尷尬啊…所以此處重放)

step1,用戶登錄頁面代碼如下,需要注意的是點擊登錄后提交到/HomeworkSystem/ActionServlet?method=login&entityType=User method=login表示登錄動作 entityType=User表示動作相關對象類別是User

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>login.jsp</title> </head> <body> <form id="mainForm" method="post" action="/HomeworkSystem/ActionServlet?method=login&entityType=User"> 請輸入用戶編號:<input type="text" name="userId" /> <br/> 請輸入密碼:<input type="passWord" name="userPassword"/> <br/> <input type="submit" value="登錄"/> </form> </body> </html>

step2:根據(jù)web.xml配置,ActionServlet負責處理該請求,代碼如下,注意注釋部分的解釋內容:

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import action.support.Action; import action.support.ActionContext; import exception.MyException; import java.util.Iterator; import java.util.Map; //ActionServlet作為整個項目唯一的Servlet public class ActionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response);//doGet與doPost一樣處理 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //輸入輸出格式設置 response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //根據(jù)request用戶輸入信息創(chuàng)建不同的ActionContext(Action上下文) ActionContext context=ActionController.assemblyActionContext(request); //根據(jù)不同的ActionContext創(chuàng)建不懂的action動作 Action action=ActionController.dispatchAction(context); try { context=action.execute();//執(zhí)行動作并返回結果 } catch (MyException ex) {//如果有異常,跳轉異常提示頁面 request.setAttribute("tipInfo", ex.getInfo()); request.getRequestDispatcher("/tip.jsp").forward(request,response); } //設置返回頁面 request.setAttribute("actionUrl",context.getActionUrl()); //取上下文中的返回值 Map<String,Object> map=context.getOutputParams(); if(map!=null){ Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); if(key.toString().startsWith("session")){ request.getSession().setAttribute(key.toString(), val); }else{ request.setAttribute(key.toString(), val); } } } //跳轉到index.jsp主頁面,注意 actionUrl指向頁面顯示在index.jsp右邊內容區(qū)域 request.getRequestDispatcher("/index.jsp").forward(request,response); } }

step3,ActionServlet中有兩個重要方法,這兩個方法實際上就定義了動作路由,前一個方法定義了如何從用戶輸入獲取Action需要的上下文環(huán)境,后一個方法則從上下文環(huán)境自動生成對應的動作。當正式編程時,每當定義一個新的動作類處理一類動作時,都要從ActionController類的這兩個方法中進行注冊對應的上下文生成邏輯和匹配動作邏輯。

//根據(jù)request用戶輸入信息創(chuàng)建不同的ActionContext(Action上下文) ActionContext context=ActionController.assemblyActionContext(request); //根據(jù)不同的ActionContext創(chuàng)建不懂的action動作 Action action=ActionController.dispatchAction(context);

OK,此時我們要進行的是登錄動作,method=login。所以ActionController中可添加如下代碼,注意注釋中的解釋內容。

package servlet; import inter.IOperation; import java.util.*; import javax.servlet.http.HttpServletRequest; import entity.*; import factory.EntityFactory; import factory.OperationFactory; import action.*; import action.support.Action; import action.support.ActionContext; /** * 實質的控制器 * @author 貓哥 * @date 2017.2.11 * 一定注意該類是整個控制邏輯的核心,每當有新的Action來了,需要從本類進行類似“注冊”的動作,而且必須保證 * createAction與assemblyActionContext正確的呼應(對應)關系 */ public class ActionController { /*assembly裝配的意思,裝配ActionContext即裝配動作的上下文,上下文的意思就是環(huán)境 一定注意本方法不管如何執(zhí)行,只關心需要執(zhí)行時候需要哪些參數(shù)*/ public static ActionContext assemblyActionContext(HttpServletRequest request){ ActionContext context=new ActionContext(); //裝配兩個必備參數(shù) context.setOperationType(request.getParameter("method")); context.setEntityType(request.getParameter("entityType")); //剩下的就是根據(jù)需要裝配了 if(context.getOperationType().equals("login")){ //登錄時間,需要攜帶用戶輸入的用戶名、密碼 Map<String,Object> map=new HashMap<String,Object>(); map.put("userId", request.getParameter("userId")); map.put("userPassword", request.getParameter("userPassword")); context.setInputParams(map); } return context; } /*dispatch的意思是調度,分派 一定注意本方法只關心將context中請求派給哪個Action處理 為了保證呼應,可先直接將上面if段拷貝,然后修改內容*/ public static Action dispatchAction(ActionContext context){ if(context.getOperationType().equals("login")){ return new LoginAction(context); } return null; } }

由此可見針對login動作,ActionController生成了含userId和userPassword信息的上下文,且定義了該上下文對應的Action為LoginAction(context)。

step4,這樣動作LoginAction開始執(zhí)行。

package action; import java.util.Date; import java.util.HashMap; import java.util.Map; import operation.UserOperation; import action.support.Action; import action.support.ActionContext; import util.Constant; import entity.User; import exception.MyException; import factory.OperationFactory; public class LoginAction extends Action{ public LoginAction(ActionContext context){ super(context); } @Override public ActionContext execute() throws MyException { UserOperation oper=(UserOperation)OperationFactory.createOperation(context.getEntityType()); String inputUserId=(String)context.getInputParams().get("userId"); String inputUserPassword=(String)context.getInputParams().get("userPassword"); User realUser=(User)oper.selectById(Integer.parseInt(inputUserId)); if(realUser!=null&&realUser.getUserPassword().equals(inputUserPassword)){ //設置返回參數(shù)back Map<String,Object> back=new HashMap<String,Object>(); //登錄用戶,一定注意如果需要Servlet接收到返回context時將對應量放入session域,則命名為session.... back.put("sessionUser", realUser); //登錄用戶角色對應菜單 back.put("sessionRoleMenu", Constant.RoleMenu.get(realUser.getUserRole().getRoleName())); context.setOutputParams(back); context.setActionUrl("tip.jsp"); return context; } else{ throw new MyException(new Date(),"LoginAction Error","登錄失?。?); } } }

到此處再結合ActionServlet中處理context.getOutputParams()的邏輯就好理解了,返回值如果需要放入session域,那么action中命名時就加上session。如果放入request域,那就不要使用session字樣的命名。

Map<String,Object> map=context.getOutputParams(); if(map!=null){ Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); if(key.toString().startsWith("session")){ request.getSession().setAttribute(key.toString(), val); }else{ request.setAttribute(key.toString(), val); } } }

step5,好的,角色菜單信息依然放在Constant中:

package util; import java.util.HashMap; public class Constant {//保存常量信息 //roleMenu用于保存角色及對應的菜單信息 public static HashMap<String,String[][]> RoleMenu=new HashMap<String,String[][]>(); //pageSize用于保存不同實體列表頁面顯示實體個數(shù)信息(每頁多少個) public static HashMap<String,String> PageSize=new HashMap<String,String>(); //使用static代碼塊對roleMenu進行初始化 static{ //注意,二位數(shù)組中的每一組表示一個菜單的信息,又**map建立了角色名和菜單直接的對應關系 RoleMenu.put("校長", new String[][]{ {"人員管理","view","User"},//由具體的地址,變?yōu)槌橄蟮膮?shù) {"課程管理","view","Course"} }); RoleMenu.put("教師", new String[][]{}); RoleMenu.put("學生", new String[][]{}); //初始化頁面列表個數(shù) PageSize.put("Course", "10"); PageSize.put("Job", "10"); PageSize.put("Lesson", "10"); PageSize.put("Role", "10"); PageSize.put("User", "10"); PageSize.put("Work", "10"); } }

step6,**后是登錄成功后的index.jsp頁面代碼及其相關CSS文件index.css:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib PRefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!-- 使用c:標簽需要添加本行代碼 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>index.jsp</title> <link href="css/index.css" type="text/css" rel="stylesheet"/> </head> <body> <div id="main"> <div id="top"> <div id="top_title"> 貓哥培訓班作業(yè)管理系統(tǒng) </div><!-- 標題部分 --> <div id="top_info"> 歡迎您,尊敬的:${sessionUser.userName} </div><!-- 登錄用戶信息部分 --> </div><!-- top部分是標題欄 --> <div id="left"> <ul> <c:forEach items="${sessionRoleMenu}" var="menu"> <li> <a href="/HomeworkSystem/ActionServlet?method=${menu[1]}&entityType=${menu[2]}">${menu[0]}</a> </li> </c:forEach> </ul> </div><!-- left部分是菜單欄 --> <div id="right"> <c:if test="${empty actionUrl}"> 歡迎來到貓哥培訓班管理系統(tǒng) </c:if> <c:if test="${not empty actionUrl}"> <jsp:include page="${actionUrl}" flush="true"></jsp:include> </c:if> </div><!-- right部分是具體內容顯示區(qū) --> </div> </body> </html> /*css/index.css*/ /*星號表示選擇全部,設置外邊距0,內邊距0,字體大小12px,宋體*/ *{ margin:0px; padding:0px; font-size:12px; font-family:"宋體"; } /*整個body區(qū)域背景色為#F5F5F5,這個很簡單,自己**個取色器,找個漂亮的網(wǎng)頁,取個顏色就行*/ body { background-color: #FCFCFC; } /*在top、left、right外面套用一層main是為了控制寬度,并且整體居中*/ #main{ width:1000px; margin:0px auto; } /*寬度占滿它爹的寬度,高度64px是瞎試的,不好看再調整,貓哥喜歡用16px、32px、64px、128px這些,你懂的。 背景色貓哥繼續(xù)取色器 line-height表示文字占用的高度,它也是64那就是文字占用高度跟top區(qū)域高度是一樣的嘛,所以文字就居中了*/ #top{ width:100%; height:64px; background-color:#000000; line-height:64px; } /*文字顏色取色器,標題部分啊文字用微軟雅黑,大氣!*/ #top_title{ line-height:64px; font-family:"微軟雅黑"; color:#FFFFFF; float:left; font-size:32px; margin-left:16px; } /*顏色依然是自己取色的*/ #top_info{ color:#71777D; float:right; line-height:64px; font-size:16px; margin-right:16px; } /*寬度占200px差不多了吧 float表示漂浮,left的話就是靠左了,所以這個left區(qū)域就得靠左飄飄了 內部的東西跟邊距有點距離好看點,暫時定為10px,上下左右都是哦*/ #left{ width:200px; height:536px;/*貓哥認為600-64=536*/ float:left; background-color:#EEEEEE; padding:10px; } /*調整id=left的div中的ul標簽下的li標簽的樣式為上邊距10px,左邊距15px*/ #left ul li{ margin:10px 0px 0px 15px; } /*注意逗號表示同時設置兩組對象的CSS屬性 a:link表示未訪問的鏈接,a:visited表示已訪問的鏈接,顏色憑愛好了*/ #left a:link, #left a:visited { color: #333333; text-decoration:none;/*不要下劃線*/ } /*a:hover表示鼠標懸停的鏈接,a:active表示被選擇的鏈接*/ #left a:hover, #left a:active { color: #0AA770; text-decoration:none; } /*同理right向右飄*/ #right{ width:760px;/*1000-200-10*4=760,此處一定要注意padding的內容會拓寬div整體寬度,有志于前端的可以專門去研究下*/ min-width:600px; height:536px;/*貓哥認為600-64=536*/ float:right; background-color:#FFFFFF; padding:10px; }


相關推薦:


蘇州JAVA培訓   蘇州JAVA培訓班   蘇州JAVA培訓機構

體驗課預約試聽

倒計時

12:00:00

課程熱線:

13013833891
在線咨詢

客服在線時間:早上9點~下午6點,其他時間請在線預約報名或留言,謝謝!

蘇州JAVA

免費體驗課開班倒計時

11: 41: 09

稍后會有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:13013833891
推薦機構 全國分站 更多課程

本周僅剩 個試聽名額

請鍵入信息,稍后系統(tǒng)將會把領獎短信發(fā)至您的手機

申請試聽名額

已有10254人申請免費試聽

01電話咨詢 | 13013833891

QQ:1413838287
加盟合作:0755-83654572