SSM練習——登陸實現

 使用的技術:SSM框架,Jquery,Bootstrap,Jspjavascript

 

運行效果:css

項目結構:html

 

相關jar包,在pom.xml中配置:前端

 

配置文件代碼:java

web.xmlmysql

<?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">
    
    <!-- 1.啓動Spring的容器 -->
   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </context-param>
   
    <!--②負責啓動spring容器的監聽器,它將使用①處的上下文參數得到spring配置文件地址-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
       
    
    <!-- 2.SpringMVC的前端控制器  攔截全部請求 -->
    <servlet>  
        <servlet-name>dispatch</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <!-- 未指定SpringMVC的配置文件,因此在與web同級文件下創建一個與servlet-name同名+servlet的xml文件 -->
        <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>dispatch</servlet-name>  
            <url-pattern>/</url-pattern>  
    </servlet-mapping>  
    
    <!-- 3.字符編碼過濾器  放在全部過濾器前-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
        </init-param>
        
        <init-param>
                <param-name>forceRequestEncoding</param-name>
                <param-value>true</param-value>
        </init-param>
        
        <init-param>
                <param-name>forceResponseEncoding</param-name>
                <param-value>true</param-value>
        </init-param>
        
    </filter>
    
    <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 4.使用REST風格的URI -->
    <!-- 
          配置org.springframework.web.filter.HiddenHttpMethodFilter:能夠把PUT請求轉爲DELETE或POST請求
   -->
   <filter>
             <filter-name>HiddenHttpMethodFilter</filter-name>
               <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   
   </filter>
   <filter-mapping>
               <filter-name>HiddenHttpMethodFilter</filter-name>
               <!-- 過濾全部請求 -->
               <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   
               <!-- 使頁面ajax成功發put請求 
               在Spring MVC過濾器-HiddenHttpMethodFilter中咱們提到,
               jsp或者說html中的form的method值只能爲post或get,咱們能夠經過HiddenHttpMethodFilter獲取put表單中的參數-值,
               而在Spring3.0中獲取put表單的參數-值還有另外一種方法,即便用HttpPutFormContentFilter過濾器。
               HttpPutFormContentFilter過濾器的做爲就是獲取put表單的值,並將之傳遞到Controller中標註了method爲RequestMethod.put的方法中。
               -->
   <filter>
           <filter-name>HttpPutFormContentFilter</filter-name>
           <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
   </filter>
   
   <filter-mapping>
           <filter-name>HttpPutFormContentFilter</filter-name>
           <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   
    </web-app>

spring.xmljquery

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:tx="http://www.springframework.org/schema/tx"
 
         xmlns:aop="http://www.springframework.org/schema/aop"
 
       xmlns:mvc="http://www.springframework.org/schema/mvc"
 
       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"
       
       
 
  xsi:schemaLocation="
 
              http://www.springframework.org/schema/beans    
 
                 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
     
              http://www.springframework.org/schema/tx      
 
              http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
 
               http://www.springframework.org/schema/context
 
               http://www.springframework.org/schema/context/spring-context-4.3.xsd
               
               http://www.springframework.org/schema/mvc
               
               http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
 
               http://www.springframework.org/schema/aop
 
             http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
             
            <!--Spring的配置文件 :主要配置和邏輯業務有關的-->
            
            <!-- 掃描包 -->
            <context:component-scan base-package="com.ssm">
                        <!-- 不掃描@Controller註解  -->
                    <context:exclude-filter type="annotation"  expression="org.springframework.stereotype.Controller" />
            
            </context:component-scan>
            
                        <!-- 引入外部配置文件 -->
            <context:property-placeholder  location="classpath:dbconfig.properties"/>
            
            
            <!-- ==================數據源,事務控制 ========================-->
            <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <property name="jdbcUrl" value="${jdbc.url}"></property>
                    <property name="driverClass" value="${jdbc.driver}"></property>
                    <property name="user" value="${jdbc.username}"></property>
                    <property name="password" value="${jdbc.password}"></property>
            </bean>
            
            
            <!-- ========================配置和Mybatis的整合 =============================-->
            
            <bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean">
            
                                <!-- 指定Mybatis全局配置文件的位置 -->
            
            <!-- 加載mybatis的配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml"></property>
            <!-- 配置數據源 -->
            <property name="dataSource" ref="pooledDataSource"></property>
            
            <!-- 指定mybatis.mapper文件的位置 -->
            <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
            
            </bean>
            
            <!-- 配置掃描器,將mybatis接口的實現加入到ioc容器中 -->
                <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                       
               <!-- 掃描全部dao接口的實現,加入到ioc容器 -->
                       <property name="basePackage" value="com.ssm.dao"></property>
       
               </bean>

                <!-- ==================事務控制==================== -->
                
                <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                        <!-- 控制數據源 -->
                        <property name="dataSource" ref="pooledDataSource"></property>
                
                </bean>
            
            <!-- 開啓使用xml配置形式的事務 -->
            <aop:config>
            <!-- 切入點表達式 -->
                <aop:pointcut expression="execution(* com.ssm.service.*.*(..))" id="txPoint"/>
                <!-- 配置事務加強 -->
                <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
            
            </aop:config>
            
            
            
            <!-- 配置事務加強,事務如何切入 -->
            <tx:advice id="txAdvice"  transaction-manager="transactionManager">
                <tx:attributes>
                    <!-- 全部方法都是事務方法 -->
                    <tx:method name="*"></tx:method>
                    
                        <!--以get開頭的全部方法-->
                    <tx:method name="get*" read-only="true"></tx:method>
            
                </tx:attributes>
            </tx:advice>
            
            <!-- 
                    Spring配置文件的核心點:數據源,與mybatis的整合,事務控制
            
             -->
             
             
             <!-- 配置一個能夠批量的執行sqlSession -->
             <bean  id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
                     <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
                     
                     <!-- 執行器類型,批量-batch -->
                    <constructor-arg name="executorType" value="BATCH"></constructor-arg>
            
             </bean>
             

</beans>

springmvc.xmlweb

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 
         xmlns:aop="http://www.springframework.org/schema/aop"
 
       xmlns:mvc="http://www.springframework.org/schema/mvc"
 
       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:tx="http://www.springframework.org/schema/tx"
 
  xsi:schemaLocation="
 
              http://www.springframework.org/schema/beans    
 
                 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
     
              http://www.springframework.org/schema/tx      
 
              http://www.springframework.org/schema/tx/spring-mvc-4.3.xsd
 
               http://www.springframework.org/schema/context
 
               http://www.springframework.org/schema/context/spring-context-4.3.xsd
               
               http://www.springframework.org/schema/mvc
               
               http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
 
               http://www.springframework.org/schema/aop
 
             http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
             
<!--SpringMVC的配置文件 :主要包含網站跳轉的控制,配置-->
        <context:component-scan base-package="com.ssm" use-default-filters="false">
        
        <!-- 掃描@Controller註解  不掃描用exclude -->
    <context:include-filter type="annotation"
        expression="org.springframework.stereotype.Controller" />
        
        </context:component-scan>
        
        <!-- 配置視圖解析器  方便頁面返回 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <!-- spring中加入jstl標籤庫 -->
           <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
                       <!-- 前綴 -->
                       <property name="prefix" value="/WEB-INF/views/"></property>
                       <!-- 後綴 -->
                       <property name="suffix" value=".jsp"></property>
           </bean>
           
           <!-- 兩個標準配置 -->
           <!-- 將SpringMVC不能處理的請求交給tomcat -->
           <mvc:default-servlet-handler></mvc:default-servlet-handler>
           <!-- 能支持SpringMVC更高級的一些功能  JSR303的校驗,快捷的ajax,映射動態請求-->
           <mvc:annotation-driven>
                   <!-- <mvc:message-converters>
                     <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                 </mvc:message-converters>
            -->
           </mvc:annotation-driven>
        
</beans>

mybatis-config.xmlajax

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
  <configuration>
                  <!-- 開啓自動駝峯命名規則(camel case)映射,
                  即從經典數據庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的相似映射。 -->
          <settings>
              <setting name="mapUnderscoreToCamelCase" value="true" />
          </settings>
          
          <!-- 類型別名  自定義別名name爲類所在的包路徑-->
          <typeAliases>
              <package name="com.ssm.bean"></package>
          </typeAliases>
         
  </configuration>

dbconfig.propertiesspring

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=123

 其中修改了Mybatis逆向工程生成的相關文件

EmployeeMapper.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.ssm.dao.EmployeeMapper">
  <resultMap id="BaseResultMap" type="com.ssm.bean.Employee">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="gender" jdbcType="CHAR" property="gender" />
    <result column="email" jdbcType="VARCHAR" property="email" />
  </resultMap>
  <sql id="zd">
          id,name,password,gender,email
  </sql>
  <!-- 登陸驗證 -->
  <select id="login" resultMap="BaseResultMap" parameterType="com.ssm.bean.Employee">
          select <include refid="zd"></include> from Employee
          <where>
                  name=#{name} and password=#{password}
          </where>
  
  </select>
   <!-- 註冊 -->
  <insert id="insert" parameterType="com.ssm.bean.Employee">
          insert into Employee(<include refid="zd"></include>) 
          values(#{name},#{password},#{gender},#{email})
  
  </insert>
</mapper>

EmployeeMaper.java

package com.ssm.dao;

import com.ssm.bean.Employee;

public interface EmployeeMapper {
    
    public Employee login(Employee emp);
    
    String insert(Employee emp);
  
}

EmpService.java

package com.ssm.service;

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

import com.ssm.bean.Employee;
import com.ssm.dao.EmployeeMapper;

@Service
public class EmpService {
    
        @Autowired
        EmployeeMapper employeeMapper;

    public Employee getLogin(Employee emp) {
        
        Employee empinfo = employeeMapper.login(emp);
            
        return empinfo;
    }

}

EmpController.java

package com.ssm.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.ssm.bean.Employee;
import com.ssm.service.EmpService;

@Controller
public class EmpController {
        @Autowired
        EmpService empService;
        
        @RequestMapping("/login")
        public String elogin(HttpServletRequest request){
            String loginname = request.getParameter("name");
            String loginpass = request.getParameter("password");
            Employee emp = new Employee();
            emp.setName(loginname);
            emp.setPassword(loginpass);
            
            Employee empo = empService.getLogin(emp);
                if(empo!=null){
                    return "success";
                }else{
                    return "error";
                }
            }
            
        
}

視圖層顯示頁面

登陸頁面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>登陸頁</title>
<link rel="stylesheet" type="text/css"
    href="./static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    <style>
        .form-horizontal{
                width:500px;
                height:300px;
                
        }
    </style>
</head>

<script src="./static/js/jquery-3.2.1.min.js" language="javascript"></script>
<script type="text/javascript">
    // 控制onsubmit提交的方法,方法名是vform()
        function form(){
            
            var name = $("#loginname").val();
            var password = $("#loginpass").val();
            //判斷上面的變量,若是爲空字符串不能提交
            if(name == ""){
                alert("請輸入登陸名!");
                return false;
            }
            if(password == ""){
                alert("請輸入密碼!");
                return false;
            }
            //除以上結果的能夠提交,返回true
            return true;
        }
    </script>

<body>

    <h1>練習ssm框架之登陸實現</h1>
    <hr>

    <form class="form-horizontal" action="login" method="post"
        onsubmit="return form()">
        <div class="form-group">
            <label class="col-sm-2 control-label">用戶名</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="loginname"
                     name="name">
            </div>
        </div>
        <div class="form-group">
            <label class="col-sm-2 control-label">密碼</label>
            <div class="col-sm-10">
                <input type="password" class="form-control" id="loginpass"
                     name="password">
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-default">登陸</button>
            </div>
        </div>
    </form>
</body>
</html>

登陸成功或失敗跳轉頁面

<body>
    welcome to start studying SSM<br>
  </body>

 

<body>
    賬號密碼錯誤,<a href="index.jsp">返回</a> <br>
  </body>

                                                                                                       百度連接https://pan.baidu.com/s/1bqy18rt

相關文章
相關標籤/搜索