java SSM第三章学习内容(JDBC+SpringMVC+Spring 登录功能)

一.JDBC+SpringMVC+Spring 登录功能

1.导相应的jar包

2.修改总配置文件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>springMVC</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext-*.xml</param-value>
  </context-param>
  
        <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>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
<listener>
    <listener-class>
            org.springframework.web.util.Log4jConfigListener
    </listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
</web-app>

3.可以在WebRoot目录下创建一个statics,放js或则css,在配置文件中可以设置不拦截

4.创建resources,放入框架配置文件


applicationContext-jdbc.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:aop="http://www.springframework.org/schema/aop"  
        xmlns:p="http://www.springframework.org/schema/p"  
        xmlns:tx="http://www.springframework.org/schema/tx"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="   
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd">  
    <!--
        使spring扫描包下的所有类,让标注spring注解的类生效 
        若扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
    -->
    <context:component-scan base-package="com.service"/> 
    <context:component-scan base-package="com.dao"/>   
  
</beans>


applicationContext-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
        <context:component-scan base-package="com.controller"/>    
        <!-- 设置该文件夹目录下的不进行拦截 -->
    <mvc:annotation-driven/>
    <mvc:resources mapping="/statics/**" location="/statics/" />
    
    <!-- 完成视图的对应 -->
    <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>


5.写实体类
6.写工具类,可以把JDBC写成静态常量

参考代码:

Const:
public class Const {
    public static final String DRIVER="com.mysql.jdbc.Driver";
    public static final String URL="jdbc:mysql://127.0.0.1:3306/supermarket?useUnicode=true&characterEncoding=utf-8";
    public static final String USER="root";
    public static final String PASSWORD="root";
}

DbHelper:
public class DbHelper {
    //连接数据库方法
    public static Connection getConnection(){
        Connection conn =null;
        try {
            Class.forName(Const.DRIVER);
            conn = (Connection) DriverManager.getConnection(Const.URL,
                    Const.USER, Const.PASSWORD);
        } catch (Exception e) {
            // TODO: handle exception
        }
        return conn;
    }
    //关闭资源
    public static void closeAll(ResultSet rs,Connection conn,PreparedStatement ps){
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

7.写dao类,用于核查功能信息
com.dao:

@Repository("LianxiDao")
public class LianxiDao {
    //验证登录信息
    public boolean isLogin(int id,String model){
        boolean flag =false;
        PreparedStatement ps =null;
        ResultSet rs = null;
        Connection conn = DbHelper.getConnection();
        String sql ="SELECT COUNT(1) FROM lianxi WHERE id=? AND model=?";
        int count;
        try {
            ps =  conn.prepareStatement(sql);
            ps.setInt(1, id);
            ps.setString(2, model);
            rs =  ps.executeQuery();
            rs.next();
            count = rs.getInt(1);
            if (count>0) {
                flag=true;
            }
        } catch (Exception e) {
            // TODO: handle exception
        } finally{
            DbHelper.closeAll(rs, conn, ps);
        }
        
        return flag;
    }
    
    //查询
    public List<Lianxi> selectAll(){
        List<Lianxi> list= new ArrayList<Lianxi>();
        PreparedStatement ps =null;
        ResultSet rs = null;
        Connection conn = DbHelper.getConnection();
        String sql ="SELECT * FROM lianxi ";
        try {
            System.out.println(sql);
            ps = conn.prepareStatement(sql);
            int i = 0;
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println(i++);
                Lianxi lianxi = new Lianxi();
                lianxi.setId(rs.getInt(1));
                lianxi.setModel(rs.getString(2));
                lianxi.setOfprice(rs.getDouble(3));
                lianxi.setOfDate(rs.getDate(4));
                list.add(lianxi);
            }
            
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            DbHelper.closeAll(rs, conn, ps);
        }
        return list;
    }
    
    
    //增
    public int addLianxi(Lianxi lianxi){
        int num = 0;
        PreparedStatement ps =null;
        Connection conn =null;
        conn = DbHelper.getConnection();
        String sql ="insert into lianxi values(?,?,?,?)";
        try {
            ps=conn.prepareStatement(sql);
            ps.setInt(1,lianxi.getId());
            ps.setString(2,lianxi.getModel());
            ps.setDouble(3,lianxi.getOfprice());
            ps.setObject(4,lianxi.getOfDate());
            num = ps.executeUpdate();
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            DbHelper.closeAll(null, conn, ps);
        }
        return num;
    }
    
    //AJAX
    public Map<String,String> lianxiExis(String model){
        Map<String,String> map = new HashMap<String, String>();
        Connection conn = null;
        PreparedStatement ps =null;
        ResultSet rs = null;
        String sql = "select * from lianxi where model=?";
        int count = 0;
        try {
            ps = conn.prepareStatement(sql);
            ps.setString(1, model);
            rs = ps.executeQuery();
            rs.next();
            count = rs.getInt(1);
        } catch (Exception e) {
            // TODO: handle exception
        }
        if (count>0) {
            map.put("zq", "用户名正确");
        }else {
            map.put("cw", "用户名错误");
        }
        return map;
    }
}

8.service类

com.service:

@Service
public class UserServices {
    @Resource
    public LianxiDao lianxiDao;

    public LianxiDao getLianxiDao() {
        return lianxiDao;
    }

    public void setLianxiDao(LianxiDao lianxiDao) {
        this.lianxiDao = lianxiDao;
    }
    
    public boolean isLogin(int id,String model){
        return lianxiDao.isLogin(id, model);
    }
    
    public List<Lianxi> selectAll(){
        return lianxiDao.selectAll();
    }
    
    public int addLianxi(Lianxi lianxi){
        return lianxiDao.addLianxi(lianxi);
    }
    
    public Map<String,String> lianxiExis(String model){
        return lianxiDao.lianxiExis(model);
    }
}

9.com.controller

 

@Controller
@RequestMapping("/userController")
public class UserController {
    @Resource
    private UserServices userServices;

    public UserServices getUserServices() {
        return userServices;
    }

    public void setUserServices(UserServices userServices) {
        this.userServices = userServices;
    }

    //登录后显示查询页面
    @RequestMapping("/login")
    public String isLogin(@RequestParam("id")int id,@RequestParam("model")String model,HttpServletRequest request
            ,HttpServletResponse response,@ModelAttribute("lianxi")Lianxi lianxi){
        boolean bb = userServices.isLogin(id, model);
        if (bb) {
            List<Lianxi> list = userServices.selectAll();
            request.getSession().setAttribute("Lianxi",list);
            return "cg";
        }else{
            return "sb";
        }
    }

    //add验证
    @RequestMapping("/addyanzheng")
    public String yanzheng(@Valid Lianxi lianxi,BindingResult cuowu){
        if (cuowu.hasErrors()) {
            return "sb";
        }else {
            return "redirect:/userController/addLianxi";
        }
    }
    
/*    @RequestMapping("addUser.html")
    public String welcome(@ModelAttribute("lianxi")Lianxi lianxi){
        return "redirect:/userController/addLianxi";
    }*/

    
    //增加
    @RequestMapping("/addLianxi")
    public String addLianxi(Lianxi lianxi,HttpServletRequest request
            ,HttpServletResponse response){
        int num = userServices.addLianxi(lianxi);
        if (num>0) {
            List<Lianxi> list = userServices.selectAll();
            request.getSession().setAttribute("Lianxi",list);
            return "cg";
        }else {
            return "sb";
        }
    }
    
    //AJAX
    @ResponseBody
    @RequestMapping("/ajax")
    public String lianxiExis(@RequestParam("model")String model){

        HashMap<String, String> map = (HashMap<String, String>) userServices.lianxiExis(model);
        
        return JSONArray.toJSONString(map);
        
    }
    
    //AJAX跳转
    @RequestMapping("/tiaozhuan")
    public String tiaozhuan(){
        return "zhuce";
    }
}

10.jsp使用表单形式提交controller判断后跳转相应页面

猜你喜欢

转载自blog.csdn.net/JayVergil/article/details/81514267
今日推荐