L130201X1
スーパーマーケットの管理システムのユーザログイン操作を実現springmvc
形質転換はベースでプロジェクトに実装L1301
次のコードを加えた後のヘッドでコピーSpring構成ファイルの下に新しいApplicationContextの-jdbc.xmlのリソースディレクトリは、格納された後1は、スキャンコードは、主に、注釈のために、以下の文書を指定するパケットのために使用されます
<コンテキスト:コンポーネント・スキャンベースパッケージ=「cn.smbms.service」> </コンテキスト:コンポーネント・スキャン>
<コンテキスト:コンポーネント・スキャンベースパッケージ=「cn.smbms.dao」> </コンテキスト:コンポーネント・スキャン>
図2に示すように、web.xmlファイルを開き、コードを次の配置
(1)コードスプリング・コンフィギュレーション・ファイルをポイントするように構成されました:
<コンテキスト-PARAM>
<param-name>のcontextConfigLocation </ PARAM名>
<param-value>のクラスパス:。ApplicationContextの - * xmlの</ PARAM値>
</コンテキスト-param>の
Webコンテナ、コンテナは春を初期化するとき、(2)のContextLoaderListenerがその完全修飾名をコピーして検索し、リスナーを設定するには、リスナーがのServletContextListenerモニタインタフェースを実現し、あなたが開始することができ、前提は、web.xml構成に行くことです
<聞き手>
<リスナクラス>
org.springframework.web.context.ContextLoaderListener
</リスナクラス>
</リスナー>
図3は、springmvc-servlet.xmlコードは変更されません
図4に示すように、変換DAO層
cn.smbmsでは、クラス名のコメントUserDaoImpl.javaプラス@Repositoryの前に、ユーザー・コピーUserDao.javaとUserDaoImpl.javaの内部には、フォルダをユーザーフォルダを作成し、新しいフォルダをDAO
図5に示すように、サービスレイヤ変換
一方、サービスフォルダに新しいサービスcn.smbmsでは、ユーザーフォルダを確立し、ユーザーフォルダは、クラス名+ UserServiceImpl.java @Service注釈の前に、UserService.javaとUserServiceImpl.java内部をコピープライベート UserDao userDao; @Resourceを先行し、
6、cn.smbms.controllerレイヤーを作成
次のようにUserController.javaコードは次のとおりです。
@コントローラ
@RequestMapping( "/ユーザ")
パブリック クラス UserControllerで{
プライベートロガーロガー=ロガー。getLogger(UserControllerで。クラス);
@資源
プライベート UserServiceのUserServiceの。
//ランディングページを実現するためにスキップ
@RequestMapping(値= "/ login.htmlと")
公共の文字列のログイン(){
logger.info( "UserControllerでは============ SMBMSを歓迎します");
戻る「ログイン」;} //ログインを実装します
@RequestMapping(値= "/ dologin.html"、メソッド= RequestMethod。POST)
公共の文字列dologin(@RequestParam文字列ユーザーコード、
@RequestParamストリングのuserPassword){//サービスメソッドを呼び出し、ユーザマッチ
ユーザのユーザ= userService.login(ユーザーコード、のuserPassword)。
IF(ヌル!=ユーザー){// //成功したランディングページジャンプ(frame.jsp)
リターン "リダイレクト:/user/main.html";
} 他 {//ページジャンプ(login.jspを)
戻る「ログイン」。}}
@RequestMapping(値= "/ main.htmlを")
パブリック文字列のmain(){
リターン「フレーム」。}}
7、プロジェクトにリソースファイルのコピー
静的リソースファイル、カレンダー、CSS、画像、JSの(1)コピー
(2)公開ページfoot.jsp、head.jsp、frame.jsp、login.jspを
(3)キット:ConfigManager.java、Constants.java、Singleton.java、TestSingleton.javaを備えcn.smbms.tools
(4)コピー:BaseDao.javaクラス
データベースファイルとログファイルlog4j.propertiesのdatabase.propertiesの(5)のコピー
(6)は、データベース接続に必要なJARパッケージのmysql-コネクタのjava-5.1.0-bin.jarをのコピー
8、テスト結果は:、フレームページを入力するために、正しいユーザー名とパスワードを入力しdologinエラーページを入力します。
9、Web設定の[ようこそ]ページで設定
<歓迎-ファイルリスト>
<歓迎-ファイル> /WEB-INF/jsp/login.jsp </歓迎ファイル>
</歓迎ファイルリスト>
ウェブサイトにアクセスするには、ブラウザを作ることができます
http:// localhost:8080 / L130101X1SpringMVC /ユーザー/ login.htmlと改为
http:// localhost:8080 / L130101X1SpringMVC /
L130203X1 Springmvcは、ユーザーのログインページプロンプトセッションを実施します
図1に示すように、次のコード変換UserController.java
@コントローラ
@RequestMapping( "/ユーザ")
パブリッククラスUserControllerで{
プライベートロガーロガー= Logger.getLogger(UserController.class)。
@資源
プライベートUserServiceのUserServiceの。
//ランディングページを実現するためにスキップ
@RequestMapping(値= "/ login.htmlと")
公共の文字列のログイン(){
logger.info( "UserControllerでは============ SMBMSを歓迎します");
「ログイン」を返す;} //ログインを実装します
@RequestMapping(値= "/ dologin.html"、メソッド= RequestMethod.POST)
公共の文字列dologin(@RequestParam文字列ユーザーコード、
@RequestParam文字列のuserPassword、
HttpSessionのセッション、HttpServletRequestのリクエスト){
//サービスメソッド、ユーザーの一致を呼び出します
ユーザのユーザ= userService.login(ユーザーコード、のuserPassword)。
(ヌル!=ユーザー){//成功した着陸の場合
session.setAttribute(Constants.USER_SESSION、ユーザ)
//ページジャンプ(frame.jsp)
リターン "リダイレクト:/user/main.html";
}他{
メッセージで//ページジャンプ(login.jspを)、
request.setAttribute(「エラー」、「ユーザー名またはパスワードが正しくありません」);
「ログイン」を返します。}}
@RequestMapping(値= "/ main.htmlを")
パブリック文字列メイン(HttpSessionのセッション){
IF(session.getAttribute(Constants.USER_SESSION)== NULL){
リターン "リダイレクト:/user/login.html";}
"フレーム" を返します;}}
2、テストの結果、ログインが成功したディスプレイグッド午後です!システム管理者は、あなたを歓迎します!ログオン失敗:表示ユーザー名またはパスワードが正しくありません。
L130203X2の使用は、結果ページのマッピングを達成springmvc
1、次の新しいウェブルート静フォルダ、カレンダー、CSS、画像、JSファイルで
2、開いた構成次のコードspringmvc-servlet.xml
<MVC:リソースの場所= "/静/"
マッピング= "/静/ **" />
3、ページスタイルの参照パスを調整
4、ブラウザアクセスは、スタイルが表示されます
ローカル例外処理テストL130204X1
1、UserController.javaに次のコードを追加します
(値= "exlogin.html"、方法= RequestMethod。@RequestMapping GET)
公共の文字列exLogin(@RequestParam文字列ユーザーコード、
@RequestParamストリングのuserPassword){
logger.info( "exLogin =========");
ユーザのユーザ= userService.login(ユーザーコード、のuserPassword)。
もし(ユーザ== NULL){
スロー 新新(「ユーザー名またはパスワードが間違っている」)のAのRuntimeException。
リターン "リダイレクト:/user/main.html";}
@ExceptionHandler(値= {のRuntimeException。クラス })
公共の文字列handlerException(のRuntimeException電子、
HttpServletRequestのREQ){
req.setAttribute( "E"、E);
返す「エラー」。}
2、のコードerror.jsp新しいJSPディレクトリ、
$ {} e.message
3、ブラウザ、URLへのアクセスを入力します。
http:// localhostを:?8080 / L130101X1SpringMVC /ユーザー/ exlogin.html USERCODE =管理者&にuserPassword = 123
4、ブラウザ出力の結果:ユーザー名またはパスワードが正しくありません。
すべての例外処理のL130204X2テスト
1、UserController.javaコメントローカル変数構成コード
@ExceptionHandler(値= {RuntimeException.class})
公共の文字列handlerException(のRuntimeException電子、
設定するには、グローバル変数に2、springmvc-servlet.xml
<豆
クラス= "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" >
<プロパティ名= "exceptionMappings" >
<小道具>
<小道具キー= "java.lang.RuntimeException" >エラー</小道具>
</小道具>
</プロパティ>
</豆>
図3に示すように、コードはerror.jspに変更しました
$ {} exception.message
4、ブラウザアクセス
http:// localhostを:?8080 / L130101X1SpringMVC /ユーザー/ exlogin.html USERCODE =管理者&にuserPassword = 123
結果:ユーザー名またはパスワードが正しくありません。
L130205X1ユーザーが変換を達成するための照会します
SSJ ---> springmvc、springjdbc
1、UserController.javaに次のコードを追加します
@RequestMapping(値= "/ userlist.html")
公共の文字列gerUserList(モデルモデル、
@RequestParam(値= "QUERYNAME"、必須= 偽)文字列queryUserName、
@RequestParam(値= "queryUserRole"、必須= 偽)文字列queryUserRole、
@RequestParam(値= "pageIndexパラメータ"、必須= 偽)文字列pageIndexパラメータ){
logger.info( "getUserList ----> queryUserName:" + queryUserName)。
logger.info( "getUserList ----> queryUserRole:" + queryUserRole)。
logger.info( "getUserList ----> pageIndexパラメータ:" + pageIndexパラメータ)。
int型 _queryUserRole = 0;
一覧<ユーザー> USERLIST = nullを。
int型。pageSizeを=定数のpageSizeを ; //セットページ容量を
int型 currentPageNo = 1; //現在のページ
もし(queryUserName == NULL){
queryUserName = "";}
もし(queryUserRole!= nullの &&!queryUserRole.equals( "")){
_queryUserRole =整数。parseInt(queryUserRole);}
もし(pageIndexパラメータ!= nullの){
試す {currentPageNo =整数。valueOf(pageIndexパラメータ)。
} キャッチ(NumberFormatExceptionが電子){
リターン "リダイレクト:/user/syserror.html"; }}
INTザtotalCountプロパティ= userService.getUserCount(queryUserName、_queryUserRole); //合計数(表)
PageSupportページ= 新しい PageSupport();
pages.setCurrentPageNo(currentPageNo)。
pages.setPageSize(pageSizeを)。
pages.setTotalCount(totalCountプロパティ)。
int型総ページ数= pages.getTotalPageCount(); //总页数
IF(currentPageNo <1){//最初と最後の制御
currentPageNo = 1。
} そう であれば(currentPageNo> totalPageCount){
currentPageNo = totalPageCount。}
USERLIST = userService.getUserList(queryUserName、_queryUserRole、currentPageNo、pageSizeを)。
model.addAttribute( "ユーザリスト"、ユーザリスト)。
一覧<役割>のRoleList = nullを。
roleplayers)が(= roleService.getRoleListをリストします。
model.addAttribute( "のRoleList"、のRoleList)
model.addAttribute( "queryUserName"、queryUserName)。
model.addAttribute( "queryUserRole"、queryUserRole)。
model.addAttribute( "totalPageCount"、totalPageCount)
model.addAttribute( "totalCountプロパティ"、totalCountプロパティ)。
model.addAttribute( "currentPageNo"、currentPageNo)。
戻る「ユーザリストを」;}
@RequestMapping(値= "/ syserror.html")
パブリック文字列sysError(){
戻る「syserrorを」。}
2、コピーに関連するプロジェクトの一般的なクラス
(1)新しいディレクトリの下cn.smbms.dao役割は、RoleDao.java、RoleDaoImpl.javaをコピーします
(2)コピーRole.javaをcn.smbms.pojo
(3)新しいディレクトリの下cn.smbms.serviceの役割は、RoleService.java、RoleServiceImpl.javaをコピーします
(4)コピーuserlist.jsp、rollpage.jsp以下JSP、ページ内の修正された参照パス一方