package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class Login extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF><hr><center>");
//得到error信息
String info=req.getParameter("info");
if(info!=null){
pw.println("<hl>你的用户名或是密码错误!</hl>");
}
pw.println("<h1>登录界面</h1>");
pw.println("<form action=logincl method=post>"); //用loginCl页面去检查要跳转的条件
pw.println("用户名:<input type=text name=username><br>");
pw.println("密 码:<input type=password name=passwd><br>");
pw.println("<input type=checkbox name=keep value=2>两周内不在重复登录<br>");
pw.println("<input type=submit value=loging><br>");
pw.println("</form>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
pw.println("</html>");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//登录控制文件的servlet
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCl extends HttpServlet{
//重写init函数
public void init(){
try {
//这是从文件中读取数据
//创建一个FileReader
FileReader f=new FileReader("f:\\myCounter.txt");
//把FileReader 转换成BufferedReader
BufferedReader br=new BufferedReader(f);
//读出一行数据
String numval=br.readLine();
br.close();
//将times 的值放入到servletContext中
this.getServletContext().setAttribute("visitTimes",numval);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void destroy(){
try {
// 这是将新的次数写回去
//创建一个Filewriter看内存数据-->磁盘文件(写入,输出)
//看内存数据<--磁盘文件(读入,输入)
FileWriter fw=new FileWriter("f:\\myCounter.txt");
BufferedWriter bw=new BufferedWriter(fw);
bw.write(this.getServletContext().getAttribute("visitTimes").toString());
//关闭文件流
bw.close();
System.out.println("destroy被调用");
}
catch (Exception ex) {
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
Connection ct = null;
ResultSet rs = null;
Statement sm = null;
try{
//服务器接收login页面发来的用户名和密码,要用到req。
String u = req.getParameter("username");//此处填写组件名
String p = req.getParameter("passwd");//此处填写组件名
//调用UserBeanCl (1)创建一个对象
UserBeanCl ubc=new UserBeanCl();
//(2)使用UserBeanCl的方法
if(ubc.checkUser(u,p)){
System.out.println("用户合法");
//合法用户
String keep=req.getParameter("keep");
if(keep!=null){
//1将用户名和密码保存在客户端(cookie)
//创建
Cookie name=new Cookie("myname",u);
Cookie pass=new Cookie("mypasswd",p);
//设置时间
name.setMaxAge(14*24*3600);
pass.setMaxAge(14*24*3600);
//回写到客户端
res.addCookie(name);
res.addCookie(pass);
}
HttpSession hs = req.getSession(true);
hs.setMaxInactiveInterval(20);
hs.setAttribute("pass","ok");
//连接登录后的欢迎界面
//sendRedirect的作用是跳转界面
//3\==============添加网页访问次数的功能=============
//将servletContext中的visitTimes中值++
String times=this.getServletContext().getAttribute("visitTimes").toString();
//对times++在重新写回servlectContext
this.getServletContext().setAttribute("visitTimes",(Integer.parseInt(times)+1)+"");
res.sendRedirect("Main");//该处填写域名
}
else
{//返回登录页面
res.sendRedirect("login");//该处填写域名
}
}
catch(Exception ex){
ex.printStackTrace();
}
finally
{
try
{
if(rs!=null)
{
rs.close();
}
if(sm!=null)
{
sm.close();
}
if(ct!=null)
{
ct.close();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
//登录界面
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class Wel extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
//得到session防止非法登录
HttpSession hs = req.getSession(true);
String myname = (String)hs.getAttribute("pass");
String u = req.getParameter("username");
String p = req.getParameter("passwd");
//1、================//读取Cookie==================
String name="";
String passwd="";
if(myname == null)
{
//如果session中没有用户信息,再看看有没有cookie信息
//从客户端得到所有的Cookie
Cookie [] allCookies=req.getCookies();
int i=0;
//如果allCookies不为空……
if(allCookies!=null){
//从中取出Cookie
for(i=0;i<allCookies.length;i++){
//依次取出Cookie
Cookie temp=allCookies[i];
if(temp.getName().equals("myname")){ //得到Cookie的值
name=temp.getValue();
}
else if(temp.getName().equals("mypasswd")){
passwd=temp.getValue();
}
}
if(name.equals("")&&!passwd.equals("")){
//到loginCl中验证
res.sendRedirect("logincl?username="+name+"&passwd="+passwd);
return;
}
}
//返回登录界面
res.sendRedirect("login?info=error1");
return;
}
res.setContentType("text/html;charset=gbk");//中文防止乱码
PrintWriter pw = res.getWriter();
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF>欢迎你:"+myname+"<img src=imgs/6.GIF><hr><center>");
pw.println("<h1>管理用户</h1>");
pw.println("你的用户名是:"+u);
//3\=========添加网页访问次数的功能============
//=========分页功能===============
int pageSize=3;//一页显示几条记录
int pageNow=1;//希望显示第几页
//动态的接收pageNow
String sPageNow=req.getParameter("pageNowok");
if(sPageNow!=null){
pageNow=Integer.parseInt(sPageNow);
}
//调用userBeancl
UserBeanCl ubc=new UserBeanCl();
ArrayList al=ubc.getResultByPage(pageNow,pageSize);
//设置表头
pw.println("<table border=1>");
pw.println("<tr bgcolor=pink><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th><th>修改用户</th><th>删除用户</th></tr>");
//定义一个颜色数组
String[] mycol={"silver","pink"};
//显示出来
for(int i=0;i<al.size();i++){
UserBean ub=(UserBean)al.get(i);
pw.println("<tr bgcolor="+mycol[i%2]+">");
pw.println("<td>"+ub.getUserId()+"</td>");
pw.println("<td>"+ub.getUsername()+"</td>");
pw.println("<td>"+ub.getPasswd()+"</td>");
pw.println("<td>"+ub.getMail()+"</td>");
pw.println("<td>"+ub.getGrade()+"</td>");
pw.println("<td><a href=Update?uId="+ub.getUserId()+"&uName="+ub.getUsername()+"&uPass="+ub.getPasswd()+"&uMail="+ub.getMail()+"uGrade="+ub.getGrade()+">修改用户</a></td>");
pw.println("<td><a href=DelUserCl?userid="+ub.getUserId()+" onClick=\"return window.confirm('你确认要删除用户吗?')\">删除用户</a></td>");
pw.println("</tr>"); }
pw.println("</table>");
//做个超链接
pw.println("<br><a href=login>返回重新登陆</a></br>");
//上一页
if(pageNow!=1)
pw.println("<a href=wel?pageNowok="+(pageNow-1)+">上一页</a>");
//显示超链接
for(int i=pageNow;i<=pageNow+4;i++){
pw.println("<a href=wel?pageNowok="+i+">"+i+"</a>");
}
int pageCount=ubc.getPageCount();
//下一页
if(pageNow!=pageCount)
pw.println("<a href=wel?pageNowok="+(pageNow+1)+">下一页</a><br>");
pw.println("该网页被访问了"+this.getServletContext().getAttribute("visitTimes").toString()+"次<br>");
//指定跳转到某一页
//输入的页数过大怎么办?不是数值怎么办?
pw.println("<form action=wel>");
pw.println("请输入页数<input type=text name=pageNowok>");
pw.println("<input type=submit value=go>");
pw.println("</form>");
pw.println("</form>");
pw.println("你的IP="+req.getRemoteAddr()+"<br>");
pw.println("你的机器名是"+req.getRemoteHost()+"<br>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class Main extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<hl>主界面</hl>");
pw.println("<a href=wel>管理用户</a><br>");
pw.println("<a href=???>添加用户</a><br>");
pw.println("<a href=???>查找用户</a><br>");
pw.println("<a href=???>安全退出</a><br>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
pw.println("</html>");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//处理删除用户
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class DelUserCl extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
//调用UserBean的删除用户的方法完成删除任务
UserBeanCl ubc=new UserBeanCl();
String id=req.getParameter("userid");
//接收从WEL传递的id
if(ubc.delUser(id))
{
//删除成功
res.sendRedirect("Ok");
}
else
{
res.sendRedirect("Err");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//操作成功界面
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class Ok extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<h1>恭喜你,操作成功!</h1>");
pw.println("<a href=Main>返回主界面</a> <a href=wel>继续删除用户</a>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
pw.println("</html>");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//操作失败界面
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class Err extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<h1>很遗憾,操作不成功!</h1>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
pw.println("</html>");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//这是一个UserBean<---->users表映射
//他的一个对象<--->users表的一条记录对应
//数据
package com.tsinghua;
public class UserBean {
private int userId;
private String username;
private String passwd;
private String mail;
private int grade;
public void setUserId(int userId){
this.userId=userId;
}
public int getUserId(){
return this.userId;
}
public void setUsername(String username) {
this.username = username;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public void setMail(String mail) {
this.mail = mail;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getUsername() {
return (this.username);
}
public String getPasswd() {
return (this.passwd);
}
public String getMail() {
return (this.mail);
}
public int getGrade() {
return (this.grade);
}
}
//这是一个处理类(处理users表)<----->操作UserBean
package com.tsinghua;
import java.sql.*;
import java.util.*;
public class UserBeanCl {
//业务逻辑
private Connection ct=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
private int pageCount=0;//共有几页(计算)
//修改用户
public boolean updateUser(String id, String email, String passwd, String grade){
boolean b=false;
try {
//得到连接
ConnDB cd=new ConnDB();
ct=cd.getConn();
String sql="use spdb;update users set passwd='"+passwd+"', email='"+email+"', grade='"+grade+"' where userid='"+id+"'";
ps=ct.prepareStatement(sql);
System.out.println("sql========"+sql);
int num=ps.executeUpdate();
if(num==1)
{
//更新成功
b=true;
}else{
//更新失败
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return b;
}
//删除用户
public boolean delUser(String id){
boolean b=false;
try{
//得到链接
ConnDB cd=new ConnDB();
ct=cd.getConn();
String sql="use spdb;delete from users where userid='"+id+"'";
ps=ct.prepareStatement(sql);
int num=ps.executeUpdate();
if(num==1)
{
//删除成功
b=true;
}else{
//删除失败
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return b;
}
//返回pageCount
public int getPageCount(){
return this.pageCount;
}
//分页显示
public ArrayList getResultByPage(int pageNow,int pageSize){
ArrayList al=new ArrayList();
try{
int rowCount=0;//共有几条记录(查表)
//连接到数据库
ConnDB cd=new ConnDB();
ct=cd.getConn();
ps = ct.prepareStatement("select count(*) from users");
rs= ps.executeQuery();
//返回一个结果集,如果增加,删除,更改的话用update
if(rs.next()){
rowCount=rs.getInt(1);
}
//计算PageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
ps=ct.prepareStatement("select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)");
//给?赋值
// ps.setInt(1,pageSize);
//ps.setInt(2,pageSize*(pageNow-1));
//执行查询
rs=ps.executeQuery();
while(rs.next()){
//将rs中的每条记录封装到UserBean ub中
UserBean ub=new UserBean();
ub.setUserId(rs.getInt(1));
ub.setUsername(rs.getString(2));
ub.setPasswd(rs.getString(3));
ub.setMail(rs.getString(4));
ub.setGrade(rs.getInt(5));
//将ub放入到Arraylist中
al.add(ub);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return al;
}
//验证用户
public boolean checkUser(String u,String p){
boolean b=false;
try{
//得到链接
ConnDB cd=new ConnDB();
ct=cd.getConn();
ps=ct.prepareStatement("select top 1 passwd from users where username=?");
ps.setString(1,u);
rs=ps.executeQuery();
if(rs.next()){
String dbPasswd=rs.getString(1);//注入漏洞
if(dbPasswd.equals(p)){
b=true;
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
this.close();
}
return b;
}
public void close(){
try{
if(rs!=null){
rs.close();
rs=null;
}
if(ps!=null){
ps.close();
ps=null;
}
if(ct!=null){
ct.close();
ct=null;
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class Update extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CACCF6>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<h1>修改用户界面</h1>");
pw.println("<form action=UpdateCl>");
pw.println("<table border=1>");
pw.println("<tr><td>id</td><td><input readonly name=uid type=text value="+req.getParameter("uId")+"></td></tr>");
pw.println("<tr><td>name</td><td><input readonly type=text value="+req.getParameter("uName")+"></td></tr>");
pw.println("<tr><td>passwd</td><td><input name= newPasswd type=text value="+req.getParameter("uPass")+"></td></tr>");
pw.println("<tr><td>email</td><td><input name=newEmail type=text value="+req.getParameter("uMail")+"></td></tr>");
pw.println("<tr><td>grade</td><td><input name=newGrade type=text value="+req.getParameter("uGrade")+"></td></tr>");
pw.println("<tr><td colspan=2><input type=submit value=修改用户></td></tr>");
pw.println("</table></form>");
pw.println("</center><hr><img src=imgs/3.GIF>");
pw.println("</body>");
pw.println("</html>");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
//处理修改用户
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class UpdateCl extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
try
{
//解决中文乱码
res.setContentType("text/html;charset=gbk");
//调用UserBean的删除用户的方法完成删除任务
UserBeanCl ubc=new UserBeanCl();
if(ubc.updateUser(req.getParameter("uid"), req.getParameter("newEmail"),req.getParameter("newPasswd"), req.getParameter("newGrade")))
{
//删除成功
res.sendRedirect("Ok");
}
else
{
res.sendRedirect("Err");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}