标签:数据 count 登录 style idt nal tab 验证 关闭
想了想 还是先把这个写了 方便理解和自己记忆
首先是
1.servlet格式Login登录页面(正常是jsp来的)我的代码中是One 注意下就没什么
2.LoginC(验证用户)
3.Wel(欢迎界面)LoginC成功就到这
四.UserBeanHandle.java也是业务逻辑层 需要添加xml清单文件
5.UserBean.java 表示user表
6.ConnneDB.java 与数据库的连接
其实功能都一样 用官方的说法就是用面向对象的思想 将代码分离 老师说企业都是怎么做的 的确也是
Login 就不写了
5.UserBean
几个成员变量
private int userId;
private Stirng username;
private String password;
再get和set就完成
6.ConDB
private Connection connection=null;
public Connection getCon() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection=DriverManager.getConnection( "jdbc:mysql://localhost:3306/bookstore", "root", "");
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
2.LoginC
前面有写细节介绍
我就直接往下写
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("gbk");
PrintWriter pw = response.getWriter();
try{
//代码写在try中方便找错误
String name=request.getParameter("username");
String pwd=request.getParameter("password");
// 数据库操作 調用UserBeanHandle
UserBeanHandle handle=new UserBeanHandle();
if(handle.checkUser(name, pwd)){
//用户名密码正确将信息存入
HttpSession hSession=request.getSession(true);
hSession.setMaxInactiveInterval(30);
hSession.setAttribute("pass", "你的用户名:"+name);
response.sendRedirect("Wel?uname="+ java.net.URLEncoder.encode(name, "gbk"));
}//这样就看起来简单舒服了 微笑脸
else{
response.sendRedirect("One");
}
3.Wel
response.setContentType("text/html;charset=utf-8");
HttpSession hs = request.getSession(true);
String val=(String)hs.getAttribute("pass");
if(val==null)
response.sendRedirect("One");//去到登录页面拿用户等
String name=new String((request.getParameter("uname")).getBytes("ISO8859_1"),"GBK");
PrintWriter pw = response.getWriter();
int pageSize=3;
int pageNow=2;
try{
// 动态接受pageNow的值
String page = request.getParameter("pageSelected");
if (page != null) {
pageNow = Integer.parseInt(page);
}
//这里的集合就是业务逻辑层中的 放信息 集合的作用很大的哦
UserBeanHandle userBeanHandle=new UserBeanHandle();
ArrayList arrayList=userBeanHandle.getResultByPage(pageNow, pageSize);
pw.println("<html><body>");
pw.println("<table width=50% border=1>");
pw.println("<tr><th>用户ID</th><th>用户名</th><th>密码</th></tr>");
//稍微注意for 就没什么问题了
for (int i=0;i<arrayList.size();i++) {
//这个很重要
UserBean usBean=(UserBean)arrayList.get(i);//拿到前面数据的消息
pw.println("<tr>");//getUserId等 是通过业务逻辑层去获取数据库中的信息
pw.println("<td>" +usBean.getUserId() + "</td>");
pw.println("<td>" + usBean.getUsername() + "</td>");
pw.println("<td>" + usBean.getPassword() + "</td>");
pw.println("</tr>");
}
pw.println("</table>");
//pageCount获取-->来自UuserBeanHandle
int pageCount=userBeanHandle.getPageCount();
for(int i=1;i<=pageCount;i++){
pw.println("<a href=Wel?uname="+name+"&pageSelected="+i+">"+i+"<a/>");
}
pw.println("</body></html>");
}catch(){e.pringStackTrace();}
四,UserBeanHandle 比较中的业务逻辑层了
// 调用数据库
private Connection connection = null;
private PreparedStatement psStatement = null;
private ResultSet rsResultSet = null;
private int pageCount = 0;
public int getPageCount() {
return pageCount;
}
//分页显示
public ArrayList getResultByPage(int pageNow, int pageSize){
// 数据将保存到集合arrayList中
ArrayList arrayList = new ArrayList<>();
try{
int zh = 0;
//调用了ConDB
ConDB conDB = new ConDB();
connection = conDB.getCon();
psStatement = connection
.prepareStatement("select count(*) from user");
rsResultSet = psStatement.executeQuery();
if (rsResultSet.next()) {
zh = rsResultSet.getInt(1);
}
// 计算pageCount
if (zh % pageSize == 0) {
pageCount = zh / pageSize;
} else {
pageCount = zh / pageSize + 1;
}
psStatement = connection.prepareStatement("select * from user limit " + pageSize
* (pageNow - 1) + "," + pageSize);
rsResultSet = psStatement.executeQuery();
while (rsResultSet.next()) {
UserBean uBean = new UserBean(); // 从UserBean拿来的 表的三列信息
uBean.setUserId(rsResultSet.getInt(1));
uBean.setUsername(rsResultSet.getString(2));
uBean.setPassword(rsResultSet.getString(3));
// 将用户信息放入AraayList
arrayList.add(uBean);
}
catch (Exception e) {
e.printStackTrace();
}
return arrayList;
}
//验证
public boolean checkUser(String username, String password) {
boolean exist = false;
try{
//调用ConDb
ConDB conDB=new ConDB();
connection=conDB.getCon();
psStatement = connection.prepareStatement("select password from user where username="+ "‘" + username + "‘");
rsResultSet = psStatement.executeQuery();
if (rsResultSet.next()) {
String dbPaString = rsResultSet.getString(1);
if (dbPaString.equals(password)) {
exist = true;
}
}
finally{
this.close(); //这个是关闭资源的方法
}
return exist;
}
public void close(){
try{
if (rsResultSet != null) {
rsResultSet.close();
rsResultSet = null;
}
if (psStatement != null) {
psStatement.close();
psStatement = null;
}
if (connection != null) {
connection.close();
connection = null;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
这就完全分开了 按官方的说法 易维护 加功能等
后面的登录页面就是用js写了 还有要添加一些功能 就是查询图书啊 修改图书啊等等
标签:数据 count 登录 style idt nal tab 验证 关闭
原文地址:http://www.cnblogs.com/jinpei/p/6706903.html