SpringMVC学习笔记(三)------基于注解的入门实例(二.登陆注册页面)

1.创建一个动态的web工程

2.导入springMvc所需要的jar包

3.首先有一个web.xml文件,配置下前端控制器,这里我在src目录下建一个springmvc.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"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC_01</display-name>
  
  
  <!-- 配置前端控制器DispatcherServlet -->
  <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:springmvc.xml</param-value>
    </init-param>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

4.配置springmvc

<?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:mvc="http://www.springframework.org/schema/mvc"
    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/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    <!--这里base-package:写你自己的controller的包名-->
    <context:component-scan base-package="com.liqiang.controller"/>
    
    <!--默认的注解映射的支持,这样就不需要一一配置映射器和适配器,一般实际开发都是用这个 -->
    <mvc:annotation-driven/>
    <!--启用自动扫描 -->
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

5.现在来实现下登陆的逻辑页面:

当用户发送请求,来到登陆界面,所以需要一个controller

package com.liqiang.controller;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.liqiang.logic.LoginCheck;

@Controller
public class LoginController {
	
    @RequestMapping(value="/",method=RequestMethod.GET)
    public String sayHello(){
        //model.addAttribute("msg", "Hello,World!");
        return "login";
    }
    
    @RequestMapping(value="login",method=RequestMethod.POST)
    public String login(Model model, // 向前台页面传的值放入model中
            HttpServletRequest request) throws UnsupportedEncodingException{ // 从前台页面取得的值
    	request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        int flag = LoginCheck.check(username, password);
        System.out.println("hello");
        if(flag == 1){
            model.addAttribute("msg", username);
            System.out.println("world");
            return "success";
        }else{
        	System.out.println("every");
            return "login";
        }
    }
}

解释上面代码,@Controller,标注这个类是Controller类,spring会自动进行扫描,@Request Mapping中的value指的是url中的地址后缀,设置成/的目的当然是为了方便啊,

比如启动工程时,url只需要输入什么localhost:8080/项目名,它就会自动跳转到login页面;method指的是来的url是post请求还是get请求

return的是login字符串,大家还记得上面说的prefix了吧,它就会把你的url自动拼接上,完整路径就是下面这个

/WEB-INF/jsp/login.jsp

 接下来看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>login</title>
</head>
<body>
    <form action="login" method="post">
        用户名:<input type="text" name="username"/><br/>
        密&nbsp;&nbsp;码:<input type="password" name="password"/>
        <input type="submit" value="登陆"/>
        <a href="register">注册</a>
    </form>
</body>
</html>

后面需要一个检查的类

package com.liqiang.logic;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.liqiang.dao.*;
import com.mysql.jdbc.Statement;

public class LoginCheck {
    
    public static int check(String username,String password){
    	int flag = 0;
        try {
        	
        	System.out.println("username"+username+"  password:"+password);
            Statement stmt = Dao.getStmted();
            String sql = "select * from info";
            ResultSet rs = stmt.executeQuery(sql);
            String info_name;
            String info_pass; 
            while(rs.next()){
                info_name = new String(rs.getString("info_name"));
                info_pass = new String(rs.getString("pass"));
                System.out.println("username:"+info_name+"  password:"+info_pass);
                if(info_name.equals(username) && info_pass.equals(password))
                {
                	flag = 1;
                	break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(flag == 1)
        	return 1;
        else
           return 0;
    }
}

dao包如下:

package com.liqiang.dao;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Statement;

public class Dao {
    // 获取数据库连接
	private static Connection conn;
	private static Statement stmt;
	private static String url = "jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong";
	private static String root = "root";
	private static String pass = "数据库密码";
	
    public static Connection getConnection(){
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url,root,pass);//大家分享代码的时候也不要暴露自己的数据库密码,这样是非常不安全的
        }
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
            System.out.println("数据库驱动加载出错");
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            System.out.println("数据库出错");
        }
        return conn;
    }
    
    public static Statement getStmted() {
    	conn = getConnection();
    	try {
    		stmt = (Statement) conn.createStatement();
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    	
    	return stmt;
    }
    
     //关闭相关通道
    public static void close()
    {
        try
        {
            if(conn != null)
            	conn.close();
            if(stmt != null)
            	stmt.close();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            System.out.println("数据关闭出错");
        }
    }
    
}

如果验证通过,则跳转到success.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>
    登陆成功!
    欢迎~${msg};
</body>
</html>

登陆逻辑写完了,下面就是注册逻辑

package com.liqiang.controller;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.liqiang.logic.RegisterCheck;

@Controller
public class RegisterController {
	
	
	    @RequestMapping(value="register",method=RequestMethod.GET)
	    public String register(){
	        return "register";
	    }
	    
	    @RequestMapping(value="registSuccess",method=RequestMethod.POST)
	    public String registSuccess(HttpServletRequest request,Model model) throws SQLException{
	        String username = request.getParameter("username");
	        String password = request.getParameter("password");
	        String age = request.getParameter("age");
	        
	        if(RegisterCheck.registCheck(username, password,age)){
	            model.addAttribute("username", username);
	            return "login";
	        }else{
	            return "register";
	        }
	    }
	
}

把注册信息插入到数据库中

package com.liqiang.logic;

import java.sql.SQLException;

import com.liqiang.dao.Dao;
import com.mysql.jdbc.Statement;

public class RegisterCheck {
	
	    
	    public static boolean registCheck(String username,String password,String age) throws SQLException{
	        Statement stmt = Dao.getStmted();
	        String sql = "insert into info(info_name,info_age,pass)" + " values('"+username+"','"+age+"',"
	        		+ "'"+password+"')";
	        try {
	        stmt.executeUpdate(sql);
	        }catch(Exception e) {
	        	e.printStackTrace();
	        	return false;
	        }
	        
	        return true;
	    }
}

注册页面

<%@ 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>
    <form action="registSuccess" method="Post">
        用户名:<input type="text" name="username"/>
        密&nbsp;&nbsp;码<input type="text" name="password"/>
        年&nbsp;&nbsp;龄<input type="number" name="age"/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_40511966/article/details/86711694