前后台简单交互

笔记好几年前的,点比较老

一,服务端

1,配置文件web.xml

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!--  声明监听器 -->

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- Spring-MVC映射访问路径

访问路径的配置,*.do,注意不要少写/或者*。 -->

<servlet>

    <servlet-name>applicationContext</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring-mvc.xml</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

    <servlet-name>applicationContext</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

<!-- Servlet映射访问路径 -->

<servlet>

    <description>This is the description of my J2EE component</description>

    <display-name>This is the display name of my J2EE component</display-name>

    <servlet-name>LoginServlet</servlet-name>

    <servlet-class>com.server.servlet.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

    <servlet-name>LoginServlet</servlet-name>

    <url-pattern>/Servlet/LoginServlet</url-pattern>

  </servlet-mapping>

2,最原始的HttpServlet 形式

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* The doGet method of the servlet. 

*/

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String username = request.getParameter("username"); // 采用的编码是: iso-8859-1

String password = request.getParameter("password");

// 采用iso8859-1的编码对姓名进行逆转, 转换成字节数组, 再使用utf-8编码对数据进行转换, 字符串

// username = new String(username.getBytes("iso8859-1"), "gbk");

// password = new String(password.getBytes("iso8859-1"), "gbk");

username = new String(username.getBytes("iso8859-1"), "utf-8");

password = new String(password.getBytes("iso8859-1"), "utf-8");

System.out.println("姓名: " + username);

System.out.println("密码: " + password);

if("lisi".equals(username) && "123".equals(password)) {

/*

* getBytes 默认情况下, 使用的iso8859-1的编码, 但如果发现码表中没有当前字符,

* 会使用当前系统下的默认编码: GBK

*/

// response.getOutputStream().write("登录成功".getBytes("gbk"));

response.getOutputStream().write("登录成功".getBytes("utf-8"));

} else {

// response.getOutputStream().write("登录失败".getBytes("gbk"));

response.getOutputStream().write("登录失败".getBytes("utf-8"));

}

}

/**

* The doPost method of the servlet. 

*/

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("doPost");

doGet(request, response);

}

}

3,Mvc方式

@Controller

public class TojsonByJDBC {

@RequestMapping("/search.do")

public void search(HttpServletRequest request,HttpServletResponse response) throws Exception{

String username = request.getParameter("username"); // 采用的编码是: iso-8859-1

String password = request.getParameter("password");

// 采用iso8859-1的编码对姓名进行逆转, 转换成字节数组, 再使用utf-8编码对数据进行转换, 字符串

// username = new String(username.getBytes("iso8859-1"), "gbk");

// password = new String(password.getBytes("iso8859-1"), "gbk");

username = new String(username.getBytes("iso8859-1"), "utf-8");

password = new String(password.getBytes("iso8859-1"), "utf-8");

System.out.println("姓名: " + username);

System.out.println("密码: " + password);

DataOutputStream outputStream=new DataOutputStream(response.getOutputStream());

    outputStream.writeChars("success");    

    ArrayList<Person> pslist = (ArrayList<Person>) Search();

        Gson gson = new Gson();

        String json = gson.toJson(pslist);

        json = "{\"data\":"+ json +"}";


//        json = new String(json.getBytes("utf-8"));

//        response.getOutputStream().write("登录成功".getBytes("utf-8"));

//        outputStream.writeChars(json);

        outputStream.write(json.getBytes("utf-8"));

//        outputStream.writeUTF(json);

    outputStream.close();

}

//1 插入数据

public boolean Add(Person person){

    boolean flag=true;

    Connection conn=null;

    PreparedStatement ps=null;    //创建PreparedStatement 对象

    //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。

    String sql= "insert into Person (Id,Name,Sex,Nation,Age,University,Specialities) values(?,?,?,?,?,?,?)"; 

    try {

    conn=DBConnUtil.getConn();

        ps=conn.prepareStatement(sql);

        ps.setString(1, person.getId()); //对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。

        ps.setString(2, person.getName());

        ps.setString(3, person.getSex());

        ps.setString(4, person.getNation());

        ps.setString(5, person.getAge());

        ps.setString(6, person.getUniversity());

        ps.setString(7, person.getSpecialities());

        int i=ps.executeUpdate();

        if(i==0){

            flag=false;

        }

    } catch (Exception e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }finally{            

DBConnUtil.closeAll(null, ps, conn);

    }

    return flag;


    }

//2 修改数据

public boolean Update(Person person){

        boolean flag=true;

        Connection conn=null;

        PreparedStatement ps=null;

        String sql="update Person set Age=? where Name=?";        

        try {

        conn=DBConnUtil.getConn();

            ps=conn.prepareStatement(sql);

            ps.setString(1, person.getAge());

            ps.setString(2, person.getName());

            int i= ps.executeUpdate();

            if(i==0){

                flag=false;

            }

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            DBConnUtil.closeAll(null, ps, conn);

        }

        return flag;

    }

//3 删除数据

public boolean Delete(String Name){

        boolean flag=true;

        Connection conn=null;

        PreparedStatement ps=null;

        String sql="delete from Person where Name=?";        

        try {

        conn=DBConnUtil.getConn();

            ps=conn.prepareStatement(sql);

            ps.setString(1, Name);

            int i=ps.executeUpdate();

            if(i==0){

                flag=false;

            }

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            DBConnUtil.closeAll(null, ps, conn);

        }

        return flag;

    }

//4 查看数据

public List<Person> Search(){

        List<Person> list= new ArrayList<Person>();

        Connection conn = null;

    PreparedStatement ps = null;//创建Statement 

        ResultSet rs = null;//ResultSet类似Cursor 

        String sql="select * from Person";        

        try {

        conn=DBConnUtil.getConn();

            ps=conn.prepareStatement(sql);

            rs=ps.executeQuery();

            while(rs.next()){

            Person person= new Person();

            person.setId(rs.getString("Id"));

            person.setName(rs.getString("Name"));

            person.setAge(rs.getString("Age"));

            person.setSex(rs.getString("Sex"));

            person.setNation(rs.getString("Nation"));

            person.setUniversity(rs.getString("University"));

            person.setSpecialities(rs.getString("Specialities"));

                list.add(person);

            }

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            DBConnUtil.closeAll(rs, ps, conn);

        }

        return list;

    }

//5,查询(动态SQL语句)

private ArrayList<SanGuoHeroBean> Search1(String strCountry, String strSex, String strOperatorDateS,

String strOperatorDateE, String pageNO, String pageSize) {

ArrayList<SanGuoHeroBean> list= new ArrayList<SanGuoHeroBean>();

        Connection conn = null;

    PreparedStatement ps = null;//创建Statement 

        ResultSet rs = null;//ResultSet类似Cursor

        //拼接Sql语句

        String sql = "SELECT * FROM SanGuoHero where 1 = 1";

List<String> params = new ArrayList<String>();

if(!StringUtil.isEmpty(strCountry)){

sql = sql + " and University = ?";

params.add(strCountry);

}

if(!StringUtil.isEmpty(strSex)){

sql = sql + " and Sex = ?";

params.add(strSex);

}

if(!StringUtil.isEmpty(strOperatorDateS)&&!StringUtil.isEmpty(strOperatorDateE)){

sql = sql + " and CreatDate between ? and ?";

params.add(strOperatorDateS);

params.add(strOperatorDateE);

}

        try {

          conn=DBConnUtil.getConn();

            ps=conn.prepareStatement(sql);

            //设置不定长参数

            for(int i=0;i<params.size();i++){ 

            ps.setString(i+1, params.get(i)); 

            } 

            rs=ps.executeQuery();

            while(rs.next()){

            SanGuoHeroBean hero= new SanGuoHeroBean();

            hero.setId(rs.getString("id"));

            hero.setName(rs.getString("Name"));

            hero.setAge(rs.getString("Age"));

            hero.setSex(rs.getString("Sex"));

            hero.setNation(rs.getString("Nation"));

            hero.setUniversity(rs.getString("University"));

            hero.setSpecialities(rs.getString("Specialities"));

            hero.setArms(rs.getString("Arms"));

            hero.setMount(rs.getString("Mount"));

            hero.setCreatDate(rs.getString("CreatDate"));

            hero.setUpdateDate(rs.getString("UpdateDate"));

            list.add(hero);

            }

      } catch (Exception e) {

          // TODO Auto-generated catch block

          e.printStackTrace();

      }finally{

          DBConnUtil.closeAll(rs, ps, conn);

      }

        return list;

}

}

二,Android端

HttpPost等已经过时,只是查看路径

//使用Servlet处理客户端请求

// HttpPost post = new HttpPost("http://192.168.1.121:9021/Logindata/Servlet/LoginServlet");

//使用Spring-MVC处理客户端请求

// HttpPost post = new HttpPost("http://192.168.1.121:9021/Server-Android/fromparams.do");

HttpPost post = new HttpPost("http://192.168.1.121:9021/Server-Android/fromparams.do?username=kkk&password=123");

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 本文内容 1.什么是JDBC以及为什么要使用JDBC 2.JDBC核心API的讲解 3.使用JDBC核心API进行...
    Vincilovfang阅读 1,191评论 0 11
  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 3,668评论 0 1
  • 本人的环境为Myeclipse10、MySQL5.7.15 本文包括:简介JDBC编程步骤打通数据库程序详解—Dr...
    廖少少阅读 3,923评论 7 39
  • 本文主要内容 1、JDBC 2、DBUtils 01JDBC概念和数据库驱动程序 A: JDBC概念和数据库驱动程...
    胜浩_ae28阅读 392评论 0 0
  • 嘀嗒着小雨的夏夜 这一阶段充实的生活 在这个周末划上了的句号 无论愿不愿意 生活总是会拖拉拽着你奔跑 同很多人一样...
    眼睛还会流泪的sky阅读 515评论 0 4