servlet的一个小项目(一)

来源:互联网 发布:linux jdk环境变量 编辑:程序博客网 时间:2024/05/22 06:34

假期就要过去了,蜗牛也得滚回学校了。
这几天蜗牛沉迷于游戏了,没怎么好好看这个课件,不过刷了两遍之后,大体的代码也能看懂了,贴出来,顺便做做注释。

ps:这个课件是韩顺平老师的servlet。

首先是数据库:

drop database if exists spdb1;create database spdb1;use spdb1;

项目用的是sqlserver,因为太大了蜗牛没有装,就用mysql吧,指令略有不同。

上面:
如果有这个数据库就删除,再新建数据库,打开数据库。

另外可以用show databases查看数据库,show tables 查看数据库中的表。

一定要注意:mysql的操作是要加末尾的分号的。

create table users (    userId int auto_increment primary key,    username varchar(20),    passwd varchar(20),    email varchar(30),    grade varchar(20));建表,userId是自增长的主键。

下面插入数据:

下面是插入条目的语言,我测试的mysql的语句是:insert into users (属性,属性,属性)values(值,值,值);这样的格式insert into users (username,passwd,email,grade)values('admin','admin','admin@sohu.com',1);insert into users(username,passwd,email,grade) values('shunping','shunping','shunping@sohu.com', 1);insert into users(username,passwd,email,grade) values('tester1','tester1','tester1@sohu.com',5);insert into users(username,passwd,email,grade) values('tester2','tester2','tester2@sohu.com',5);insert into users (username,passwd,email,grade)values('tester3','tester3','tester3@sohu.com',5);insert into users(username,passwd,email,grade) values('tester4','tester4','tester4@sohu.com',5);insert into users(username,passwd,email,grade) values('tester5','tester5','tester5@sohu.com',5);insert into users(username,passwd,email,grade) values('tester6','tester6','tester6@sohu.com',5);insert into users (username,passwd,email,grade)values('tester7','tester7','tester7@sohu.com',5);insert into users(username,passwd,email,grade) values('tester8','tester8','tester8@sohu.com',5);insert into users(username,passwd,email,grade) values('tester9','tester9','tester9@sohu.com',5);insert into users (username,passwd,email,grade)values('tester10','tester10','tester10@sohu.com',5);insert into users (username,passwd,email,grade)values('tester11','tester11','tester11@sohu.com',5);insert into users(username,passwd,email,grade) values('tester12','tester12','tester12@sohu.com',5);insert into users(username,passwd,email,grade) values('tester13','tester13','tester13@sohu.com',5);insert into users (username,passwd,email,grade)values('tester14','tester14','tester14@sohu.com',5);

最后显示出所有的数据:

select * from users;

可以将上面的代码合成在一个sql脚本中(当然记得去掉注释),之后利用
source 文件路径
的方法引入这这个脚本。

这样的话数据库就算是建好了。

下面是具体的代码和注释:

注意这个项目是按着mvc修改过的:

//从数据库中得到连接package com.tsinghua;import java.sql.*;import javax.sql.*;import javax.naming.*;public class ConnDB {    private Connection ct=null;    public Connection getConn(){        //这是使用jdbc的方式来连接数据库         try {            //1加载驱动0.02s*10000*30            //下面这个是用sqlserver的驱动连接,可以自己换成mysql            //Class.forName("com.mysql.jdbc.Driver");            //ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select_test"            //  , "root" , "这里是密码");            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");            //得到连接            ct=DriverManager.getConnection("jdbc:microsoft:sqlserver:            //127.0.0.1:1433;databaseName=spdb1","root","这里是密码");                                  }        catch (Exception ex) {            ex.printStackTrace();        }        //这里,如果有调用这个函数的,就返回一个和数据库连接好的连接。这应该就是传说中的业务bean。        //其实就是返回了一个连接而已,之后JDBC操作数据库的是在使用的时候。        return ct;        /*使用数据源连接池的方式连接数据库        try {            //创建一个上下文环境            Context con=new javax.naming.InitialContext();            //通过con得到数据源            DataSource ds=(DataSource) con.lookup("java:comp/env/shunping");            ct=ds.getConnection();            System.out.println ("使用连接池的方式");        }        catch (Exception ex) {            ex.printStackTrace();        }        return ct;*/    }}

测试Cookie。
Cookie是保存在客户的电脑上面的。服务器有需求的时候可以去访问。

package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class CookieTest1 extends HttpServlet{    //处理get请求    public void doGet(HttpServletRequest req,HttpServletResponse res){        try {            res.setContentType("text/html;charset=gbk");            PrintWriter pw=res.getWriter();            //当用户访问该servlet时, 就将信息创建到该用户的cookie中            //1. 现在服务器端创建一个cookie            //其实cookie的结构就是一张表。color1相当于是key,后边的red相当是value            Cookie myCookie=new Cookie("color1","red");            //2. 该cookie存在的时间            myCookie.setMaxAge(30);            //如果你不设置存在时间,那么该cookie将不会保存            //3. 将该cookie写回到客户端            res.addCookie(myCookie);            pw.println("已经创建了cookie");        }        catch (Exception ex) {            ex.printStackTrace();        }                   }}

使用cookie:

//如何读取cookie案例package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class CookieTest2 extends HttpServlet{    //处理get请求    public void doGet(HttpServletRequest req,HttpServletResponse res){        try {            //下面这句话我就没有测试成功,也不知道怎么的,我换了很多种方法中文都是问号。            res.setContentType("text/html;charset=gbk");            PrintWriter pw=res.getWriter();            //从客户端得到所有cookie信息            //cookie是每次用的时候读到服务器,用完了回写到客户端这样的。(蜗牛的理解)            //多条cookie保存在一个cookie文件中            Cookie [] allCookies=req.getCookies();            int i=0;            //如果allCookies不为空...            if(allCookies!=null){                //从中取出cookie                for(i=0;i<allCookies.length;i++){                    //依次取出                    Cookie temp=allCookies[i];                    //cookie使用getName()函数取出那个“key”。                    //cookie就是一张“key-value”的表。                    if(temp.getName().equals("color1")){                        //得到cookie的值                        String val=temp.getValue();                        pw.println ("color1="+val);                        break;                    }                }                if(allCookies.length==i){                    pw.println("cookie 过期");                }            }else{                          pw.println ("不存在color1这个cookie/或是过期了!");            }           }        catch (Exception ex) {            ex.printStackTrace();        }    }}

删除一条cookie:

//如何删除cookie案例package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class CookieTest3 extends HttpServlet{    //处理get请求    public void doGet(HttpServletRequest req,HttpServletResponse res){        try {            res.setContentType("text/html;charset=gbk");            PrintWriter pw=res.getWriter();            //从客户端得到所有cookie信息            Cookie [] allCookies=req.getCookies();            int i=0;            //如果allCookies不为空...            if(allCookies!=null){                //从中取出cookie                for(i=0;i<allCookies.length;i++){                    //依次取出                    //你可以想想一下这个操作,这个操作过后,allcookie就是一个N行两列的表格。                    Cookie temp=allCookies[i];                    if(temp.getName().equals("color")){                        //将该cookie删除                        //设置“年龄”为0的效果就是删除。见文档。(设置为0好像是不保存的意思)                        temp.setMaxAge(0);                        pw.println("删除了color这个cookie");                        break;                    }                }                   }           }        catch (Exception ex) {            ex.printStackTrace();        }    }}
0 0
原创粉丝点击