隐藏

spingmvc+jdbc+mysql+eclipse项目框架搭建

发布:2021/7/23 15:16:00作者:管理员 来源:本站 浏览次数:910

 本博客讲述的是springmvc+jdbc+mysql的框架搭建过程,建立的是普通的web项目,不是maven过程,建立项目过程中所需要的依赖包下载地址是:依赖包,依赖包中也包含mybatis的依赖。

      1.用eclipse建立web项目

        步骤:点击File菜单栏---》NEW==>Dynamic web project,会出现如下图的界面:

         

项目工程名和tomcat后,点击next,进入下图:


继续点击下一步,如下图:

 

完成以后就创建好了一个web项目。

2.配置springmvc的配置文件applicationContext.xml

  在src目录的同级目录下建立一个resource目录,如下图:

 

对applicationContext进行配置,配置如下所示,代码中有相应的注释:

    <?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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        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-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
      
        <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
        <context:component-scan base-package="com.test.controller" />
        <context:component-scan base-package="com.test.service" />
        <context:component-scan base-package="com.test.dao" />
     
    <!-- 配置数据源 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName">
                <value>com.mysql.jdbc.Driver</value>
            </property>
            <property name="url">
                <value>jdbc:mysql://localhost:3306/wordLearn</value>
            </property>
            <property name="username">
                <value>root</value>
            </property>
            <property name="password">
                <value>123456</value>
            </property>
            <property name="maxActive" value="30"/>
            <property name="maxIdle" value="5"/>
        </bean>
     
        <!-- 配置Jdbc模板 -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
     
        <!-- 配置事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
            p:dataSource-ref="dataSource" />
     
        <!-- 通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 -->
        <aop:config proxy-target-class="true">
            <aop:pointcut id="serviceMethod"
                expression=" execution(* com.service..*(..))" />
            <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
        </aop:config>
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="*" />
            </tx:attributes>
        </tx:advice>
     
        <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
        <bean
            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
         
         
        <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/"
            p:suffix=".jsp" />
     
    </beans>

3.配置web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
      </listener>
      <!-- applicationContext.xml -->
      <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.action</url-pattern>
      </servlet-mapping>
      <!-- 统一字符编码为UTF-8 -->
      <filter>
        <filter-name>setcharacter</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>
      </filter>
      <filter-mapping>
        <filter-name>setcharacter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    </web-app>

4.写dao层文件

 新建一个dao层包,该包下是操作数据库的接口:


建立一个userInfoDao接口:

    package com.learnword.dao;
     
    import com.learnword.vo.UserInfoVo;
     
    public interface UserInfoDao {
        //插入用户信息
        public int addUser(UserInfoVo userInfo);
        //根据userName,查询用户信息
        public UserInfoVo selectUserInfo(String userName);
    }

5.写dao的实现层文件

 新建一个dao的实现层包,该包是实现类:


    package com.learnword.dao.impl;
     
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowCallbackHandler;
    import org.springframework.stereotype.Repository;
     
    import com.learnword.dao.UserInfoDao;
    import com.learnword.vo.UserInfoVo;
    @Repository
    public class UserInfoDaoImpl implements UserInfoDao {
        @Autowired
        public JdbcTemplate jdbcTemplate;
     
        @Override
        public int addUser(UserInfoVo userInfo) {
            //插入sql語句
            try {
                String sql="insert into userInfo(user_name,password) values(?,?)";
               int result = jdbcTemplate.update(sql,new Object[]{userInfo.getUserName(),userInfo.getPassword()});
               return result;
            } catch (Exception e) {
                //-1代表插入失败
                return -1;
            }
     
        }
     
        @Override
        public UserInfoVo selectUserInfo(String userName) {
            // TODO Auto-generated method stub
            String sqlStr = "select* from userInfo where user_name=?";
             final UserInfoVo userInfo =new UserInfoVo();
            jdbcTemplate.query(sqlStr, new Object[]{userName}, new RowCallbackHandler() {
                @Override
                public void processRow(ResultSet rs) throws SQLException {
                    if(rs!=null) {
                        userInfo.setId(rs.getInt("id"));
                        userInfo.setUserName(rs.getString("user_name"));
                        userInfo.setPassword(rs.getString("password"));
                        userInfo.setEmail(rs.getString("email"));
                        userInfo.setSelectType(rs.getInt("select_type"));
                    }
                
                }
     
            });
            return userInfo;
        }
    }

6.写服务层service接口

 新建一个service层包,该包下是操作服务的接口:

    package com.learnword.service;
     
    import com.learnword.vo.UserInfoVo;
     
    public interface UserInfoService {
        //插入用户信息
        public int addUser(UserInfoVo userInfo);
        
        //根据userName,查询用户信息
        public UserInfoVo selectUserInfo(String userName);
    }

7.写服务层service实现类

 新建一个service.impl层包,该包下是操作实现服务的类:

 


    package com.learnword.service.impl;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
     
    import com.learnword.dao.impl.UserInfoDaoImpl;
    import com.learnword.service.UserInfoService;
    import com.learnword.vo.UserInfoVo;
    @Service
    public class UserInfoServiceImpl implements UserInfoService{
     
        @Autowired
        public UserInfoDaoImpl userInfoDao;
        
        @Override
        public int addUser(UserInfoVo user) {
            int result =1;//1代表成功
            //由于用户名userName的唯一性,所以插入之前先查询该用户是否已经存在
            UserInfoVo userInfo = userInfoDao.selectUserInfo(user.getUserName());
            if(userInfo.getUserName()!=null) {
                return -1;
            }
            result = userInfoDao.addUser(user);
            return result;
        }
     
        @Override
        public UserInfoVo selectUserInfo(String userName) {
            UserInfoVo userInfo = null;
            try {
                //查询用户信息
                userInfo = userInfoDao.selectUserInfo(userName);
            } catch (Exception e) {
                userInfo =null;
            }
            return userInfo;
        }
    }

8.实现controller层

 controller层实现的是登录注册的功能:

 

    package com.learnword.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 org.springframework.web.bind.annotation.ResponseBody;
     
    import com.learnword.service.UserInfoService;
    import com.learnword.vo.UserInfoVo;
     
    @Controller
    @RequestMapping("/login")
    public class LoginController {
        @Autowired
        UserInfoService userInfoService;
        
        //跳转到注册页面
        @RequestMapping("/register.action")
        public String register(HttpServletRequest request)throws Exception
        {
            return "register";
        }
        //跳转到登录页面
        @RequestMapping("/login.action")
        public String login(HttpServletRequest request)throws Exception
        {    
            return "login";
        }    
        //去登陆,判断登录成功之后,跳转到主页
        @RequestMapping("/toLogin.action")
        @ResponseBody
        public String toLogin(HttpServletRequest request)throws Exception
        {    
            String userName = request.getParameter("userName");
            String password = request.getParameter("password");
            if(userName.equals("")) {
                //如果用户名为空,则返回登录页面
                return "loginFail";
            }
            //根据用户名查询用户信息
            UserInfoVo userInfo = userInfoService.selectUserInfo(userName);
            //如果密码相同,则登录成功,把用户信息存放在session里
            if(userInfo!=null&&password.equals(userInfo.getPassword())) {
                request.getSession().setAttribute("userInfo", userInfo);
                return "loginSucess";
            }else{
                return "loginFail";
            }
        }    
        
        //往数据库添加注册信息
        @RequestMapping("/toRegister.action")
        @ResponseBody
        public String toRegister(HttpServletRequest request)throws Exception
        {
            //获取注册的用户名和密码
            String userName = request.getParameter("userName");
            String password = request.getParameter("password");
            //创建用户对象
            UserInfoVo userInfo = new UserInfoVo();
            userInfo.setUserName(userName);
            userInfo.setPassword(password);
            //往数据库添加用户信息
            int result=userInfoService.addUser(userInfo);
            if(result==1) {
                return "sucess";
            }else {
                return "error";
            }
     
            }
    }

上述完成以后,自己动手写两个简单的页面,就可以完成了项目工程的搭建!