zoukankan      html  css  js  c++  java
  • JAVA_OA(六):SpringMVC登陆实例

    JAVA_OA(六):登陆实例

    1. 例子逻辑简述
    2. SpringMVC中的jdbc
    3. 具体代码

    例子逻辑简述

    1. 登陆信息的提交(提交方法:/user/login.do)
    2. Controller中执行@RequestMapping(“/user/login.do”)
    3. 找到判断方法UserDao,执行并返回结果
    4. Controller返回结果
      这个是一般的登录流程图(但是,这次我们的登陆错误将会直接用Error页面代替):
    Created with Raphaël 2.1.0开始loginUserDao登陆成功yesno

    SpringMVC中的jdbc

    这个是jar包,我这次用的是Oracle,但是要注意版本3.28似乎不支持Oracle12c,但是支持11g。但是如果换成4的话,注意jdk要换成8,咳咳。

    jar包文件目录照片

    具体代码



    1.先上非java文件

    
    <!--加载数据库的连接配置      -->
    <util:properties id="jdbc" location="classpath:db.properties"></util:properties>
    <!--配置数据源  数据库连接池-->
    <!-- 会一一注入到class中,value是db中的值,这里不懂可以看三 -->
        <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
           <property name="url" value="#{jdbc.url}"></property>
           <property name="driverClassName" value="#{jdbc.driver}"></property>
           <property name="username" value="#{jdbc.user}"></property>
           <property name="password" value="#{jdbc.password}"></property>
           <property name="maxActive" value="#{jdbc.maxActive}"></property>
           <property name="maxWait" value="#{jdbc.maxWait}"></property>
        </bean>
    
        db.properties:
    user=javaoa
    password=******(此处保密)
    url=jdbc:oracle:thin:@localhost:1521:orcl
    driver=oracle.jdbc.OracleDriver
    #数据源配置
    maxActive=5
    maxWait=5000
    
    
    

    2.Controller的代码

        @Resource
        private TeacherDao UserrDao;
        @RequestMapping("/user/login.do")
        public String login(String id,String name,String password,HttpSession session){
            String s=UserDao.login(name, password);
            if(s.equals("true")){
             session.setAttribute("login", "true");
              return "redirect:list.do";
            }else{
              return "error";
              //直接返回error页面
            }
        }
        //  list
        @RequestMapping("/user/list.do")
        public String list(ModelMap map){
    
            List<User> list=UserDao.list();
            map.addAttribute("listsss", list);
            return "list";
            //这里没有影响,你可以随便返回一个不是error的页面
        }

    3.Dao

    **
     *  数据库连接池的好处:
     *  
     *  1  重用资源以减少链接次数
     *     我用的时候 问数据源 要一个  用完了关闭  ;
     *     IO性能消耗
     *  2  更好的屏蔽数据库的相关性,保护数据库
     *
     */
    @Component
    public class UserrDao {
        @Resource(name="ds")
        private DataSource dataSource;
    
        public String login(String name,String password){
            Connection conn=null;
            String s=null;
            try {
                 conn=dataSource.getConnection();
                 String sql="select * from user where name=?";
                 /**
                  * 第一 个  连接效率比较高 用的是 预编译的sql(PreparedStatement)
                  * 第二个 可以防止sql注入
                  */
                 PreparedStatement ps=conn.prepareStatement(sql);
                 ps.setString(1, name);
                 ResultSet rs=ps.executeQuery();
    
                 User user=new User();
                 while(rs.next()){
                     user.setPassword(rs.getString("password"));
                 }
                 if(password.equals(user.getPassword())){
                     s="true";
                     return s;
                 }else{
                     s="false";
                     return s;
                 }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return s;
        }
    
    
        public List<User> list(){
            List<User> tlist=new ArrayList<User>();
            Connection conn=null;
            String s=null;
            try {
                 conn=dataSource.getConnection();
                 String sql="select * from User";
    
                 PreparedStatement ps=conn.prepareStatement(sql);
                 ResultSet rs=ps.executeQuery();
                 while(rs.next()){
                     User user=new User();
                     user.setId(rs.getString("id"));
                     user.setName(rs.getString("name"));
                     user.setPassword(rs.getString("password"));
                     tlist.add(t);
                 }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                try {
                    conn.close();
                    //实际上是调用了重写的close方法,关闭了连接池--可以先无视
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return tlist;
        }
        @Test
        public void test1(){
            ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
            User s=ac.getBean("testDao",UserDao.class);
            System.out.println(s.getDataSource().toString());
        }
    
        public DataSource getDataSource() {
            return dataSource;
        }
    
        public void setDataSource(DataSource dataSource) {
            this.dataSource = dataSource;
        }
    
    
    }
  • 相关阅读:
    为什么要有handler机制
    安卓五种数据存储的方式
    Activity生命周期详解
    JS的一些简单实例用法
    JSP 中的EL表达式详细介绍
    JSP九大内置对象和四个作用域
    JS实现---图片轮播效果
    实现 鼠标移动到表格的某行 该行换背景 ---myEclipse编写
    JS 菜单收拉样式
    spring中aware接口的
  • 原文地址:https://www.cnblogs.com/fonttian/p/9162861.html
Copyright © 2011-2022 走看看