接上一篇:
eclipse 創建maven 項目 動態web工程完整示例
eclipse maven工程自動添加依賴設置
maven工程可以在線搜索依賴的jar包,還是非常方便的
但是有的時候可能還需要設置下
eclipse不能在線搜索jar包 報錯
如果搜索不到內容,或者有報錯信息(index downloads are disabled ,search results may be incomplete)
windows preference maven 勾選上
然后 windows show views
rebuild一下
就可以搜索了
注意這個地方的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>