eclipse 建立maven 項目 動態web工程完整示例 maven 整合springmvc整合mybatis

接上一篇:html

eclipse 建立maven 項目 動態web工程完整示例java

 

 

eclipse maven工程自動添加依賴設置mysql

maven工程能夠在線搜索依賴的jar包,仍是很是方便的web

可是有的時候可能還須要設置下spring

60297850-9351-48a5-9e94-b049ec0caee9

f2c29927-7886-4ca4-aa06-c142ec1fef10

eclipse不能在線搜索jar包 報錯sql

若是搜索不到內容,或者有報錯信息(index downloads are disabled ,search results may be incomplete)數據庫

windows  preference   maven   勾選上apache

955a1439-8b33-404d-b80a-345c70e4d1be

而後  windows  show viewswindows

a8ed8784-ea10-4d58-9d8d-1897fe57c26f

7714ad98-ab6b-4363-af38-800edae03463

b458f18e-470f-4e43-b88a-d8a9c016b702

rebuild一下spring-mvc

c73782d2-c426-4bf9-a088-e52f0aa71f05

就能夠搜索了

注意這個地方的scope,暫且無論

924b04fd-244f-40bf-8829-8a5c4d44ada2

咱們輸入spring-webmvc,找到咱們須要的,單擊一下就行了

還有就是,version只要是存在的版本,咱們能夠手動寫的

0d8083e7-702d-4ea1-9ea6-e199a1c81430

1339b709-3cb1-40ce-88c4-5c5c934269c5

添加了以後,順手更新了下項目(注意,不是必需要作的哈,只是我手欠了)不過你遲早或許都會須要更新下

 

01cf02ef-1df8-48a7-838e-1975c0a974cc

而後捏

尼瑪,報錯了....

4dd0d6f1-1e86-46bb-ab04-b73346664e43

想了一下不該該啊,都修改好了的

回頭一看

個人jdk版本,還有eclipse的一些配置,都尼瑪改回來了,還原了....

127a1666-03f5-4b13-825f-bff62720d8ca

c21a35f9-f23d-4a83-8b07-950e65bc1595

腫麼了這是?

忘記設置了!!!!!

maven update project後版本還原,jdk還原了!

Maven 3.0 source和target的默認設置都是1.5,與運行Maven時的JDK版本無關,除非在項目的POM文件中顯示的指定一個版本,不然每次更新後都會使用編譯器默認的source/target版本1.5。

因此,把原來修改過的東西修改回去先......

而後pom.xml中顯示的指定這一段

<build>  

    <plugins>  

        <plugin>  

            <groupId>org.apache.maven.plugins</groupId>  

            <artifactId>maven-compiler-plugin</artifactId>  

            <version>3.3</version>  

            <configuration>  

                <!-- 指定source和target的版本 -->                 

                <source>1.8</source>  

                <target>1.8</target>  

            </configuration>  

        </plugin>  

    </plugins>  

</build>

(若是有build標籤了,就是plugins這一段)

而後在更新下  update project

剛纔的錯誤就沒了

ce8a8896-1c06-425c-abec-3f3444b70888

咱們剛纔引入了spring-context  spring-webmvc發現多了好幾個

這就是maven好處,它所依賴的包,會自動下載的...

咱們再繼續添加一個mybatis-spring

最後的結果就是這樣子

0fc58911-516c-4746-b60b-8d03f018fa88

HelloWorld.java

package springmvcMaven;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class HelloWorld {

public static void main(String[]args){

        ApplicationContext ctx = new FileSystemXmlApplicationContext("src/helloWorld.xml");

        HelloWorldSpringBean helloWorldSpringBean = (HelloWorldSpringBean)ctx.getBean("myHelloWorld");

helloWorldSpringBean.show();

    }

}

HelloWorldSpringBean.java

package springmvcMaven;

public class HelloWorldSpringBean {

private String hello;

public String getHello(){

return hello;

    }

public void setHello(String hello){

this.hello=hello;

    }

public void show(){

        System.out.println("--message--"+getHello());

    }

}

helloWorld.xml  在src的根目錄下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="myHelloWorld" class="springmvcMaven.HelloWorldSpringBean">

<property name="hello">

<value>hello World spring!</value>

</property>

</bean>

</beans>

項目的結構就是這樣子

bad45664-ead9-48b5-810c-1234ab297375

右鍵  run as,打印信息成功

spring跑通 

40fb32d7-4693-4d7f-b94f-ff6db3c62624

如今開始測試一下springmvc的狀況

爲了接下來的項目的規範性,咱們從新規劃下項目的結構以及配置文件

fac281fa-9850-411d-939b-ccc5e8e09dc2

這個是最新的結構

說白了新建了幾個包,用於區分不一樣的功能劃分,controller用於控制跳轉,domain用於存放JavaBean,dao用於操做數據庫相關,service用於相關接口的實現

mapper用於mybatis的xml文件

另外還有兩個配置文件

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd

        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<!--掃描類包,標註spring註解的類自動轉換成bean,同時完成bean的注入  (這樣類中定義的spring註解  好比@repository @autowired等才能起做用)  -->

<context:component-scan base-package="com.noteless.bbs.domain" />

</beans>

springmvc.xml設置了自動掃描的controller的類包,而且設置了視圖解析

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-4.2.xsd 

        http://www.springframework.org/schema/mvc 

        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

<!-- 自動掃描帶有@Controller註解的控制層,注入爲bean -->

<context:component-scan base-package="com.noteless.bbs.controller" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

web.xml 中指定了配置文件的路徑,以及配置了servlet

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--   <display-name>Archetype Created Web Application</display-name> -->

<!-- 1,從類路徑下加載spring的配置文件,classpath關鍵字特指類路徑下加載 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!--2,負責啓動spring容器的監聽器,它將引用1處的上下文參數,得到spring配置文件的地址  -->

<listener>

<listener-class>

    org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>bbs</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>bbs</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

controller裏面新建一個LoginController.java

package com.noteless.bbs.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class LoginController {

@RequestMapping(value="/welcome")

public String toLoginPage(HttpServletRequest request){

return "welcome";

}

}

在views下面新建了一個歡迎頁面

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>標題</title>

</head>

<body>

歡迎光臨!

<br>

歡迎光臨!

</body>

</html>

咱們啓動server,而後運行項目

2eab3490-cccf-446c-baa9-5a45e4b63782

能夠看到springmvc的配置也沒有問題

接下來是連接數據庫,以及配置mybatis

剛纔引用了一些包可是還遠遠不夠,此處再也不一一介紹沒一個引用的包的做用以及什麼時候引入了,貼出來我用到的包,

f382984f-d527-4062-8b9c-5b516b2541fa

1d2e934f-51f1-451c-afdb-6804030ed16d

有了這些包就能夠開始咱們後續的項目了

注意;若是是項目搭建初期,若是有報錯,我建議,先看看經常使用的或者必需要用到的一些包是否是缺失,都弄過來

若是還有報錯,再去看具體的緣由

固然若是你很是熟悉的話,看一眼報錯就知道缺什麼包那就最好了,估計你要是還在看個人文章,說明你不牛...

配置數據庫以及配置mybatis

這個工程示例,是接着個人以前的文章中的示例寫的,功能同樣,結構不同(以前的沒用maven)

一些javaBean類以及service 都直接拿過來用了

有興趣的翻一下其餘的文章

如今的結構爲:

9f1c169b-6e0e-4c75-959d-459967397875

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd

        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<!--掃描類包,標註spring註解的類自動轉換成bean,同時完成bean的注入  (這樣類中定義的spring註解  好比@repository @autowired等才能起做用)  -->

<context:component-scan base-package="com.noteless.bbs.domain" />

<!--掃描service包,應用spring註解配置  -->

<context:component-scan base-package="com.noteless.bbs.service" />

<!-- 定義一個使用DBCP實現的數據源 -->

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"

destroy-method="close"

p:driverClassName="com.mysql.jdbc.Driver"

p:url="jdbc:mysql://localhost:3306/sampledb"

p:username="root"

p:password="123456"/>

<!-- myBatis文件 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<!-- 自動掃描映射文件 -->

<property name="mapperLocations">

<array>

<value>classpath:mapper/*.xml</value>

</array>

</property>

</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.noteless.bbs.dao" />

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

</bean>

</beans>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-4.2.xsd 

        http://www.springframework.org/schema/mvc 

        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

<!-- 自動掃描帶有@Controller註解的控制層,注入爲bean -->

<context:component-scan base-package="com.noteless.bbs.controller" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/" />

<property name="suffix" value=".jsp" />

</bean>

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--   <display-name>Archetype Created Web Application</display-name> -->

<!-- 1,從類路徑下加載spring的配置文件,classpath關鍵字特指類路徑下加載 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!--2,負責啓動spring容器的監聽器,它將引用1處的上下文參數,得到spring配置文件的地址  -->

<listener>

<listener-class>

    org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>bbs</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>bbs</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

   其實,這幾個文件是最重要的哈,還有jar包..

2d3f0dfc-0dbf-467e-b0e8-e598b9bc1d2d

把接口  javaBean挪過來以後,配置處理好以後,測試一下,能夠執行經過

這樣一個完整的springmvc+mybatis+maven的項目就搭建完成了

999a8dbf-681c-4444-a47b-cc0776ed79a1

哦,對了,還有一個log4j,它的使用也很簡單

應用jar包

而且配置下配置文件便可

具體的能夠參考個人工程直接eclipse導入便可了

springmvcmybatisMaven-002.rar      http://pan.baidu.com/s/1sknL8rb

防止連接失效,代碼都貼出來吧..

一下就是全部的代碼,建議下載個人工程,導入eclipse慢慢研究

 

spring原理 實踐解析-簡單的helloworld

spring原理案例-基本項目搭建 01 spring framework 下載 官網下載spring jar包

spring原理案例-基本項目搭建 02 spring jar包詳解 spring jar包的用途

spring原理案例-基本項目搭建 03 建立工程運行測試 spring ioc原理實例示例

springmvc整合mybatis完整項目示例

springmvc 項目完整示例01 需求與數據庫表設計 簡單的springmvc應用實例 web項目

springmvc 項目完整示例02 項目建立-eclipse建立動態web項目 配置文件 junit單元測試

springmvc 項目完整示例03 小結

springmvc 項目完整示例04 整合mybatis mybatis所須要的jar包 mybatis配置文件 sql語句 mybatis應用

springmvc 項目完整示例05  日誌 --log4j整合 配置 log4j屬性設置 log4j 配置文件 log4j應用

springmvc 項目完整示例06 日誌–log4j 參數詳細解析 log4j如何配置

springmvc 項目完整示例07 設置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置

springmvc 項目完整示例08 前臺頁面以及知識點總結

maven項目整合springmvc整合mybatis

eclipse 建立maven 項目 動態web工程完整示例

eclipse 建立maven 項目 動態web工程完整示例 maven 整合springmvc整合

 

 

工程項目:

image

 

 

image

 

 

用到的jar包

image

 

主要的配置文件:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    
<!--   <display-name>Archetype Created Web Application</display-name> -->
  
  <!-- 1,從類路徑下加載spring的配置文件,classpath關鍵字特指類路徑下加載 -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    
    </context-param>
    <!--2,負責啓動spring容器的監聽器,它將引用1處的上下文參數,得到spring配置文件的地址  -->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    
    <servlet>
        <servlet-name>bbs</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>bbs</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
  
  
  
  
</web-app>

 

 

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

    <!-- 自動掃描帶有@Controller註解的控制層,注入爲bean -->
    <context:component-scan base-package="com.noteless.bbs.controller" />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    


    
</beans>

appliacationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">



    <!--掃描類包,標註spring註解的類自動轉換成bean,同時完成bean的注入  (這樣類中定義的spring註解  好比@repository @autowired等才能起做用)  -->
    <context:component-scan base-package="com.noteless.bbs.domain" />
    
        <!--掃描service包,應用spring註解配置  -->
    <context:component-scan base-package="com.noteless.bbs.service" />
    
    
<!-- 定義一個使用DBCP實現的數據源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
    destroy-method="close"
    p:driverClassName="com.mysql.jdbc.Driver"
    p:url="jdbc:mysql://localhost:3306/sampledb"
    p:username="root"
    p:password="123456"/>
    
    
    <!-- myBatis文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自動掃描映射文件 -->
        <property name="mapperLocations">
            <array>
                <value>classpath:mapper/*.xml</value>
            </array>
        </property>

    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.noteless.bbs.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
    

</beans>

 

log4j.properties

### set log levels ###
log4j.rootLogger = DEBUG,stdout,D


### 輸出到控制檯 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n


### 輸出DEBUG 級別以上的日誌到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = C://Users/joy/\Desktop/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### sql ###
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG  
log4j.logger.java.sql.ResultSet=DEBUG

 

LoginController.java

package com.noteless.bbs.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.noteless.bbs.domain.User;
import com.noteless.bbs.service.UserService;



@Controller
public class LoginController {

    @Autowired
    private UserService userService;
    
    @RequestMapping(value="/welcome")
    public String toLoginWelconenPage(HttpServletRequest request){

        return "welcome";
    }
    

    
    @RequestMapping(value="/login")
    public String toLoginPage(HttpServletRequest request){

        return "login";
    }
    
    
    @RequestMapping(value="/checkLogin")
    public String loginPage(HttpServletRequest request,User user){
        
        Boolean loginSucess = userService.hasMatchUser(user);
        if(loginSucess){
            userService.loginSucess(userService.findUserByUserName(user));
            request.getSession().setAttribute("Info","");
            return "welcome";
        }else{
            request.getSession().setAttribute("Info","請從新輸入!!");
            return "redirect:/login.do";
        }
        
    }
}

 

 

LoginLogMapper.java

package com.noteless.bbs.dao;

import com.noteless.bbs.domain.LoginLog;

public interface LoginLogMapper {

    public void insertLoginLog(LoginLog loginLog);
}

 

UserMapper.java

package com.noteless.bbs.dao;

import com.noteless.bbs.domain.User;

public interface UserMapper {
    
    public Integer getMatchCount(User user);

    
    public User findUserByUserName(User user);

    
    public void updateLoginInfo(User user);
    
    public void insertUser(User user);
    
    public void updateUserInfo(User user);
}

 

 

LoginLog.java

package com.noteless.bbs.domain;

import java.io.Serializable;
import java.util.Date;

public class LoginLog implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int loginLogId;
    private int userId;
    private String ip;
    private Date loginDate;
    public int getLoginLogId() {
        return loginLogId;
    }
    public void setLoginLogId(int loginLogId) {
        this.loginLogId = loginLogId;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public Date getLoginDate() {
        return loginDate;
    }
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }
    
    
}

 


User.java

package com.noteless.bbs.domain;

import java.io.Serializable;
import java.util.Date;


public class User implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int userId;
    private String userName;
    private String password;
    private int credits;
    private String lastIp;
    private Date lastVisit;
    
    
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getCredits() {
        return credits;
    }
    public void setCredits(int credits) {
        this.credits = credits;
    }
    public String getLastIp() {
        return lastIp;
    }
    public void setLastIp(String lastIp) {
        this.lastIp = lastIp;
    }
    public Date getLastVisit() {
        return lastVisit;
    }
    public void setLastVisit(Date date) {
        this.lastVisit = date;
    }
    
    
}


 

 

LoginLogService.java

package com.noteless.bbs.service;

import com.noteless.bbs.domain.LoginLog;

public interface LoginLogService {

    public void insertLoginLog(LoginLog loginLog);
}

 

 

LoginLogServiceImpl.java

package com.noteless.bbs.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.noteless.bbs.dao.LoginLogMapper;
import com.noteless.bbs.domain.LoginLog;

@Service
public class LoginLogServiceImpl implements LoginLogService {

    @Autowired
    private LoginLogMapper loginLogMapper;
    @Override
    public void insertLoginLog(LoginLog loginLog) {
        loginLogMapper.insertLoginLog(loginLog);
        
    }

}

 


UserService.java

package com.noteless.bbs.service;

import com.noteless.bbs.domain.User;

public interface UserService {

    public Boolean hasMatchUser(User user);
    
    
    public User findUserByUserName(User user);
    
    
    public void loginSucess(User user);
    
    public void insertUser(User user);


    public void UpdateUser(User user);

}

 

 

UserServiceImpl.java

package com.noteless.bbs.service;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.noteless.bbs.dao.UserMapper;
import com.noteless.bbs.domain.LoginLog;
import com.noteless.bbs.domain.User;



@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Autowired
    private LoginLogService loginLogService;
    
    @Override
    public Boolean hasMatchUser(User user) {
        
        Integer matchCount = userMapper.getMatchCount(user);
        if(matchCount > 0){
            return true;
        }else{
            return false;
        }


    }

    @Override
    public User findUserByUserName(User user) {
        return userMapper.findUserByUserName(user);
    }

    @Override
    public void loginSucess(User user) {

        user.setCredits(5+user.getCredits());
        user.setLastVisit(new Date());
        
        LoginLog loginLog = new LoginLog();
        
        loginLog.setUserId(user.getUserId());
        loginLog.setIp(user.getLastIp());
        loginLog.setLoginDate(new Date());
        
        
        userMapper.updateLoginInfo(user);
        loginLogService.insertLoginLog(loginLog);
    }

    @Override
    public void insertUser(User user) {
        userMapper.insertUser(user);
    }
    
    @Override
    public void UpdateUser(User user) {
        userMapper.updateUserInfo(user);
    }
    

}

 

 

LoginLogMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.noteless.bbs.dao.LoginLogMapper">

   <insert id="insertLoginLog" parameterType="com.noteless.bbs.domain.LoginLog">
        insert into t_login_log(
            user_id,
            ip,
            login_datetime
        ) 
        values(
            #{userId},
            #{ip},
            #{loginDate}
        )
    </insert>
    
</mapper>

 

 

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.noteless.bbs.dao.UserMapper">

    <select id="getMatchCount" parameterType="com.noteless.bbs.domain.User"
        resultType="java.lang.Integer">
        SELECT count(*)
        FROM
        t_user
        WHERE
        user_name=#{userName}
        and password=#{password}
    </select>

    <select id="findUserByUserName" parameterType="com.noteless.bbs.domain.User"
        resultType="com.noteless.bbs.domain.User">
        SELECT
        t_user.user_id as userId,
        t_user.user_name as userName,
        t_user.credits as credits,
        t_user.password as password,
        t_user.last_ip as lastIp,
        t_user.last_visit as lastVisit


        FROM
        t_user
        WHERE
        user_name=#{userName}
    </select>


    <update id="updateLoginInfo" parameterType="com.noteless.bbs.domain.User">

        UPDATE t_user
        <set>
            <if test="lastVisit !=null">
                last_visit = #{lastVisit},
            </if>
            <if test="lastIp !=null and lastIp !=''">
                last_ip = #{lastIp},
            </if>
            <if test="credits !=null and credits !=''">
                credits = #{credits},
            </if>

        </set>
        where user_id=#{userId}
    </update>

    <insert id="insertUser" parameterType="com.noteless.bbs.domain.User">
        insert into t_user(
        user_name,
        credits,
        password,
        last_ip,
        last_visit
        )
        values(
        #{userName},
        #{credits},
        #{password},
        #{lastIp},
        #{lastVisit}

        )
    </insert>



    <update id="updateUserInfo" parameterType="com.noteless.bbs.domain.User">

        UPDATE t_user

        <set>
            <if test="lastVisit !=null">
                last_visit = #{lastVisit},
            </if>
            <if test="lastIp !=null and lastIp !=''">
                last_ip = #{lastIp},
            </if>
            <if test="credits !=null and credits !=''">
                credits = #{credits},
            </if>

        </set>
        where user_id=#{userId}
    </update>


</mapper>

 

TestUserService.java

package com.noteless.bbs;

import static org.junit.Assert.*;

import java.util.Date;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.noteless.bbs.domain.User;
import com.noteless.bbs.service.UserService;



@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"})

public class TestUserService {

    @Autowired
    private UserService userService;
    

    
    private static Logger logger = Logger.getLogger(Test.class);  
    
    @Test
    public void testLog(){
        
        logger.debug("this is a debug info");
        
    }
    
    @Test 
    public void hasMAtchUser(){
        User user1 = new User();
        User user2 = new User();
        
        user1.setUserName("admin");
        user1.setPassword("123456");
        
        user2.setUserName("admin");
        user2.setPassword("11111");
        
        
        boolean b1 = userService.hasMatchUser(user1);
        //boolean b2 = userService.hasMatchUser(user2);
        
        assertTrue(b1);
        //assertTrue(b2);
        
        
        
    }
    
    @Test
    public void findUserByUserName(){
        User user = new User();
        
        user.setUserName("admin");

        
        User user1 = userService.findUserByUserName(user);
        System.out.println(user1.getUserName());
        assertEquals(user1.getUserName(),"admin");
    }

    @Test
    public void loginSucess(){
        
        User user = new User();
        user.setUserName("admin");
        user= userService.findUserByUserName(user);
        userService.loginSucess(user);
    
    }
    
    @Test
    public void insertUser(){
        
        User user = new User();
        user.setUserName("user1");
        user.setPassword("123456");
        user.setCredits(0);
        user.setLastIp("255.255.255.255");
        user.setLastVisit(new Date(0) );
        
        userService.insertUser(user);
        

    
    }
    @Test
    public void updateUserInfo(){
        
        User user = new User();
        user.setUserId(2);
        user.setLastVisit(new Date() );
        user.setCredits(5+user.getCredits());

        
        userService.UpdateUser(user);
        

    
    }
    
}

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>標題</title>
</head>
<body>

${Info}


請輸入用戶名,密碼登錄:
<form action="/springmvcMaven/checkLogin.do" meathod="post">
用戶名:
<input type="text" name="userName">
<br>
密碼:
<input type="password" name="password">
<br>

<input type="submit" value="登錄">
<input type="reset" value="重置">
</form>
</body>
</html>

 

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>標題</title>
</head>
<body>
歡迎光臨!
<br>
歡迎光臨!
</body>
</html>
相關文章
相關標籤/搜索