servlet的一个小项目(一)

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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值