接上一篇:html
eclipse 建立maven 項目 動態web工程完整示例java
eclipse maven工程自動添加依賴設置mysql
maven工程能夠在線搜索依賴的jar包,仍是很是方便的web
可是有的時候可能還須要設置下spring
eclipse不能在線搜索jar包 報錯sql
若是搜索不到內容,或者有報錯信息(index downloads are disabled ,search results may be incomplete)數據庫
windows preference maven 勾選上apache
而後 windows show viewswindows
rebuild一下spring-mvc
就能夠搜索了
注意這個地方的scope,暫且無論
咱們輸入spring-webmvc,找到咱們須要的,單擊一下就行了
還有就是,version只要是存在的版本,咱們能夠手動寫的
添加了以後,順手更新了下項目(注意,不是必需要作的哈,只是我手欠了)不過你遲早或許都會須要更新下
而後捏
尼瑪,報錯了....
想了一下不該該啊,都修改好了的
回頭一看
個人jdk版本,還有eclipse的一些配置,都尼瑪改回來了,還原了....
腫麼了這是?
忘記設置了!!!!!
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
剛纔的錯誤就沒了
咱們剛纔引入了spring-context spring-webmvc發現多了好幾個
這就是maven好處,它所依賴的包,會自動下載的...
咱們再繼續添加一個mybatis-spring
最後的結果就是這樣子
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>
項目的結構就是這樣子
右鍵 run as,打印信息成功
spring跑通
如今開始測試一下springmvc的狀況
爲了接下來的項目的規範性,咱們從新規劃下項目的結構以及配置文件
這個是最新的結構
說白了新建了幾個包,用於區分不一樣的功能劃分,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,而後運行項目
能夠看到springmvc的配置也沒有問題
接下來是連接數據庫,以及配置mybatis
剛纔引用了一些包可是還遠遠不夠,此處再也不一一介紹沒一個引用的包的做用以及什麼時候引入了,貼出來我用到的包,
有了這些包就能夠開始咱們後續的項目了
注意;若是是項目搭建初期,若是有報錯,我建議,先看看經常使用的或者必需要用到的一些包是否是缺失,都弄過來
若是還有報錯,再去看具體的緣由
固然若是你很是熟悉的話,看一眼報錯就知道缺什麼包那就最好了,估計你要是還在看個人文章,說明你不牛...
配置數據庫以及配置mybatis
這個工程示例,是接着個人以前的文章中的示例寫的,功能同樣,結構不同(以前的沒用maven)
一些javaBean類以及service 都直接拿過來用了
有興趣的翻一下其餘的文章
如今的結構爲:
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包..
把接口 javaBean挪過來以後,配置處理好以後,測試一下,能夠執行經過
這樣一個完整的springmvc+mybatis+maven的項目就搭建完成了
哦,對了,還有一個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 項目完整示例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整合
工程項目:
用到的jar包
主要的配置文件:
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>