web环境下,servlet如何设计java接口接收json,并将处理结果按json格式返回?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web环境下,servlet如何设计java接口接收json,并将处理结果按json格式返回?相关的知识,希望对你有一定的参考价值。

JSONObject jsonObject = new JSONObject();\x0d\x0aMap map = request.getParameterMap();\x0d\x0aIterator it = map.keySet().iterator();\x0d\x0awhile(it.hasNext())\x0d\x0aString key = (String)it.next();\x0d\x0aString[] values = (String[])map.get(key);\x0d\x0ajsonObject.accumulate(key, values[0]);\x0d\x0a\x0d\x0a\x0d\x0aString name = jsonObject.getString("userName"); //返回从前台接受的用户名\x0d\x0aSystem.out.println(name); //输出用户名\x0d\x0a\x0d\x0ajsonObject.clear(); // 清空jsonObjec中的数据\x0d\x0ajsonObject.put("love" , "足球"); //将足球赋给love这个变量名\x0d\x0aout.print(jsonObject); //返回json格式的数据 参考技术A

JSONObject jsonObject = new JSONObject();
Map map = request.getParameterMap();
Iterator<?> it = map.keySet().iterator();
while(it.hasNext())
String key = (String)it.next();
String[] values = (String[])map.get(key);
jsonObject.accumulate(key, values[0]);

json说白了就是个字符串。
原来用servlet怎么接受字符串参数,就怎么接受json。
只不过这个json串一定要解析才能拿到想要的数据。
处理完后再生成一个json串用writer也好,跳转页面也好,总之把json输出就算返回了。
处理json你可以不必自己写代码,从网上找个json的工具包就可以.

JSON(javascript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

Java Servlet接口web.xml配置HttpServlet父类

Servlet接口(处理客户端请求、响应给浏览器的动态资源的规范)

创建类实现Servlet接口   实现service方法

web.xml进行servlet的配置

 

Servlet接口的方法

init(ServletConfig config)  初始化  

默认第一次访问时创建servlet对象

ServletConfig:配置信息对象  在web.xml

serviceServletRequest request,ServletResponse response

每次请求都会执行 :创建新的 请求对象 响应对象

destroy():服务器关闭 (销毁servlet对象)

 

public class MyServlet implements Servlet{

public void init(ServletConfig config) throws ServletException {

String servletName=config.getServletName(); //获取Servlet名称

String value=config.getInitParameter("url"); //获取初始化参数

ServletContext context=config.getServletContext();//WEB项目对象

}

public void destroy() {  System.out.println("servlet销毁了"); }

public ServletConfig getServletConfig() {  return null;  }

public String getServletInfo() {  return null;  }

public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException,IOException {

System.out.println("servlet方法正在运行");

}

}

web.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>

<web-app ......>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>com.oracle.demo01.MyServlet</servlet-class>

<init-param>

<param-name>url</param-name>

<param-value>com.mysql.jdbc.driver</param-value>

</init-param>

<load-on-startup>3</load-on-startup><!--启动时创建Servlet对象-->

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name> <!--*:任意字符串-->

<url-pattern>/MyServlet</url-pattern> <!--完全匹配-->

<!--<url-pattern>*.html</url-pattern>--> <!--扩展名匹配-->

<!--<url-pattern>/java/*</url-pattern>--> <!--目录匹配-->

<!--<url-pattern>/</url-pattern>--> 找不到 <!--缺省匹配-->

扩展名匹配和目录匹配不能混用

</servlet-mapping>

<servlet>......</servlet> <servlet-mapping>......</servlet-mapping>可多套

<welcome-file-list><!--欢迎页面  前一个找不到 再找下一个-->

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

 

HttpServlet(实际开发中 创建类继承HttpServlet)

实现步骤: 包下 newServletClass nameMyServlet  自动继承

自动在web.xml中进行servlet的配置

WindowpreferencesJava/Editor/TemplatesNew

name:servlet   Description:servlet by my    Pattern:代码

快捷键        描述   粘贴代码

 

HttpServlet类的方法

1init()

2doGet(HttpServletRequest request,HttpServletResponse response)

3doPost(HttpServletRequest request,HttpServletResponse response)

4destroy()

访问地址 先去自己写的web.xml中找

找不到再去TomCatconf/server.xml中找 缺省匹配

缺省匹配 默认去WebContent下找静态资源

404

 

ServletContext对象   WEB项目对象(域对象 整个项目共用一个)

 

一个web应用可有多个servlet对象

 

创建:web应用被加载(服务器启动 并 发布web应用)

销毁:web应用被卸载(服务器关闭 或 移除该web应用)

 

web.xml中配置初始化参数

<context-param>

<param-name>driver</param-name>

<param-value>com.mysql.jdbc.Driver</param-value>

</context-param>

<servlet>...</servlet>

 

ServletContext context=this.getServletContext(); //获取WEB项目对象

String initParameter=context.getInitParameter("driver");//获得"driver"参数

System.out.println(initParameter);   //com.mysql.jdbc.Driver

 

//获取文件的绝对路径  通过WebContent下相对路径

String pathc=context.getRealPath("WEB-INF/classes/c.txt");

//F:javaapache-tomcat-7.0.52webappsWEB0002WEB-INFclassesc.txt

 

//获取srcclasses)下文件 通过类加载器

String path=类名.class.getClassLoader().getResource("c.txt").getPath();

字节码对象  加载        获取资源  获取路径

 

域对象的通用的方法:

context.setAttribute(String name,Object obj); (键,值)

context.getAttribute(String name);    返回Object类型

removeAttribute(String name)

HttpServletResponseHttpServlet类的响应对象)

 

 

用户登录
WebContent下创建login.jsp 内容为:
<body>
    <form action="/WEB0002/LoginServlet" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登陆">
    </form>
</body>

Java Resources/src下创建包如下
  com.oracle.web
      LoginServlet.java
  com.oracle.service
      UserService.java
  com.oracle.dao
      UserDao.java
  com.oracle.tools
      JDBCUtils.java

WebContent/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar  Build Path

LoginServlet.java文件内容:
public class LoginServlet extends HttpServlet {
    private UserService userService=new UserService();//创建服务层对象
    public void init() throws ServletException {    //第一次访问 创建对象
        ServletContext context=getServletContext();//获取WEB项目对象
        int num=0;                        //初始化计数器
        context.setAttribute("num", num);    //计数器 存键值对
    }
    public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
        //获取前端提交的用户名和密码
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        //调用Service层方法验证
        int count=userService.loginUser(username, password);
        if(count>0){
            ServletContext context=getServletContext();    //获取项目对象
            int num=(int)context.getAttribute("num");    //取键值对 的值
            num++;
            context.setAttribute("num", num);        //将计数器存回去
            response.getWriter().write("success number:"+num);
        }else{
            response.getWriter().write("faile");
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
        doGet(request, response);        //调用get请求方法
    }
}
UserService.java内容:
public class UserService {
    private UserDao userDao=new UserDao();
    //用户登录
    public int loginUser(String username,String password){
        int count=0;
        count=userDao.loginUser(username, password);//点try
        return count;
    }
}
UserDao.java内容:
public class UserDao {
    //登陆
    public int loginUser(String username,String password) 
throws SQLException{
        Connection conn=JDBCUtils.getConn();
        String sql=
        "select count(*) from user where uname=? and password=?";
        PreparedStatement pst=conn.prepareStatement(sql);
        pst.setString(1, username);
        pst.setString(2, password);
        ResultSet rs=pst.executeQuery();
        int count=0;
        while(rs.next()){
            count=rs.getInt(1);
        }
        JDBCUtils.close(conn, pst, rs);
        return count;
    }
}

 

 

 

以上是关于web环境下,servlet如何设计java接口接收json,并将处理结果按json格式返回?的主要内容,如果未能解决你的问题,请参考以下文章

设计一个java接口,接收json,并且将处理结果按json的格式返回

错题记录一

java web-----servlet

Java Web 学习与总结Servlet核心接口+Servlet3.0配置

Servlet

Java web的一些总结(四:关于servlet)