Java web,数据库,JDBC...综合练习
注意:需要在WEB-INF文件下创建lib文件夹并将所需的所有jar包导入其中且关联自己的项目,在src目录下编写druid的配置文件(druid.properties),将bootsrap所需的文件夹直接放在web目录下,如下图所示.
创建数据库及表格数据:
编写页面表单(直接复制粘贴Bootstrap的表单稍加修改即可):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form class="form-horizontal" action="http://localhost:8080/web_03/hkk" method="post">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">用户名</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputEmail3" placeholder="Username" name="username">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">密码</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3" placeholder="Password" name="password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox"> 记住密码?
</label>
</div>
</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>
编写工具类代码:
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/*
* 创建工具类,用来获取连接池对象*/
public class GetDataSou {
static Properties pro = new Properties();
static DataSource dataSource= null;
static {
InputStream in = GetDataSou.class.getClassLoader().getResourceAsStream("druid.properties");
try {
pro.load(in);
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDS(){
return dataSource;
}
}
创建自定义类查询数据,并将结果返回:
import cn.itcast.Utils.GetDataSou;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
public class MyDao {
public int checkenIfo(String name ,String password){//查询用户名和密码是否存在,并将结果返回给业务逻辑层
DataSource ds = GetDataSou.getDS();
String sql = "select count(*) from users where name =? and password =?";
JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
int count = jdbcTemplate.queryForObject(sql, int.class, name, password);
return count;
}
}
创建自定义servlet类获取页面输入的数据和向页面输出结果:
import cn.itcast.dao.MyDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
@WebServlet(urlPatterns = "/hkk")
public class MyServlet11 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration<String> names = request.getParameterNames();//获取表单所有的name属性的值
ArrayList<String> valueList = new ArrayList<>();//定义数组用来保存用户在页面输入的请求内容
request.setCharacterEncoding("utf-8");//处理请求乱码
while (names.hasMoreElements()) {
String s = names.nextElement();
System.out.println(s);//输出表单的name属性值
String[] values = request.getParameterValues(s);//根据name属性的值获取所有的value
for (String value : values) {
valueList.add(value);
System.out.println(value);//向控制台输出请求内容
}
}
MyDao myDao = new MyDao();
int i = myDao.checkenIfo(valueList.get(0), valueList.get(1));//将请求内容传给dao层进行查询
response.setContentType("text/html;charset=utf-8");//处理输出乱码
if (i == 1) {//判断查询结果并给页面输出提示
response.getWriter().write("恭喜登录成功!");
} else {
response.getWriter().write("登录失败!");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
页面及控制台的输出结果: