servlet框架改进(基础)

想了想 还是先把这个写了 方便理解和自己记忆

首先是

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写了 还有要添加一些功能 就是查询图书啊 修改图书啊等等

时间: 2024-10-07 19:16:03

servlet框架改进(基础)的相关文章

Java知多少(97)框架窗口基础

窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这个窗口,当应用程序程序启动时,由系统创建和处理: 框架窗口(JFrame):这是通常意义上的窗口,它支持窗口周边的框架.标题栏,以及最小化.最大化和关闭按钮: 一种无边框窗口(JWindow):没有标题栏,没有框架,只是一个空的矩形. 用Swing中的JFrame类或它的子类创建的对象就是JFram

Java学习关于集合框架的基础接口--Collection接口

 集合框架(Collection  Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准化了程序处理对象组的方式. 集合框架在设计上需要满足几个目标.首先,框架必须是高性能的.基本集合(动态数组.链表.树以及哈希表)的实现是高效率的.很少需要手动编写这些数据引擎中的某一个.其次,框架必须允许不同类型的集合以类似的方式进行工作,并且具有高度的互操作性.再次,扩展或改造必须易于实现.为了满

深入Jetty源码之Servlet框架及实现(Servlet、Filter、Registration)

概述 Servlet是Server Applet的缩写,即在服务器端运行的小程序,而Servlet框架则是对HTTP服务器(Servlet Container)和用户小程序中间层的标准化和抽象.这一层抽象隔离了HTTP服务器的实现细节,而Servlet规范定义了各个类的行为,从而保证了这些"服务器端运行的小程序"对服务器实现的无关性(即提升了其可移植性).在Servlet规范有以下几个核心类(接口):ServletContext:定义了一些可以和Servlet Container交互的

Web自动化测试框架改进

Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 一.适用范围:传统Web功能自动化测试.H5功能自动化测试. 二.兼容性:建议使用火狐或谷歌浏览器,因为Selenium与其兼容性最好. 三.框架改进亮点(比Selenium框架优的地方): 1. 采用PageObject设计模式,将某个页面的所有元素(包含控件)属性及元素操作封装在1个Class里面,如下所示: 这样做的目的是为了解耦,即测试代码与被测页

一些小众的框架和基础类库最好不要选择

框架和基础的类库可以减少程序开发中的很多工作,提高效率,同时可以增加稳定性,是很多开发不可缺少的必要组件.但是也正是因为他们是程序的基础,所以在选择上一定要谨慎,别看广告,看疗效,千万别头脑一热,乱选择,将来为整个的开发留下隐患. 前段时间我们开发了一个B/S的管理系统,使用国产DWZ的前端框架,让我们的程序开发效率提高了很多,整体视觉效果看上去很不错,类似ExtJs,不过因为使用Jquery作为基础,比Extjs的学习曲线要缓慢了很多.但是也为项目留下了很大的隐患.现在每次推广一个客户,都需要

用户管理系统网站框架改进之MVC模式

从之前的用户管理系统中我们会发现,JSP主要是做界面的,但却用了JSP来对用户进行验证和分页处理,而Servlet处理页面的转跳是最快捷和最方便的,所以对用户管理系统的框架进行了改进,使用MVC模式. MVC是一种设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分为三个核心部件:模型.视图和控制器.它们各自处理自己的任务. MVC的各个字母分别是M(model模型).V(view视图)和C(controller控制器) M主要由Java class来处理,也可以是Jav

spring+springMVC+mybatis的框架项目基础环境搭建

上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合. 虽然在之前activiti相关的学习中所用到的框架也是这个,但是当时重点在于实现activiti的功能,因此在环境搭建上也只是以能用为前提,与真实项目中所用的还是差了不少. 因此为了给接下来的项目做准备,今天便抽空练习了一下这个框架组合的搭建.虽然之前的框架都不是我来搭,接下来这个可能也不是让我搭,但记录下来说不定以后能用上,也或者对其他人有用. 那么进

python 网络框架twisted基础学习及详细讲解

twisted网络框架的三个基础模块:Protocol, ProtocolFactory, Transport.这三个模块是构成twisted服务器端与客户端程序的基本. Protocol:Protocol对象实现协议内容,即通信的内容协议ProtocolFactory: 是工厂模式的体现,在这里面生成协议Transport: 是用来收发数据,服务器端与客户端的数据收发与处理都是基于这个模块 在windows中安装twisted需要先安装pywin32,自己去下载下就行.随后pip instal

【Java GUI】Java框架窗口基础

窗口是GUI变成的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中.在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有下面三种窗口: ①Applet窗口:Applet类管理这个窗口,当应用程序启动时,由系统创建和处理. ②框架窗口(JFrame):这是通常意义上的窗口,它支持窗口周边的框架,标题栏以及最小化 最大化和关闭按钮. ③一种无边框窗口(JWindow):没有标题栏,没有框架,只是一个空的矩形. 用Swing中的JFrame类或者它的子类创建的对象就是JFra