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格式的数据 参考技术AJSONObject 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内
service(ServletRequest 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)
实现步骤: 包下 new→Servlet→Class name:MyServlet 自动继承
自动在web.xml中进行servlet的配置
Window→preferences→Java/Editor/Templates→New→
name:servlet Description:servlet by my Pattern:代码
快捷键 描述 粘贴代码
HttpServlet类的方法
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()
访问地址 先去自己写的web.xml中找
找不到再去TomCat的conf/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
//获取src(classes)下文件 通过类加载器
String path=类名.class.getClassLoader().getResource("c.txt").getPath();
字节码对象 加载 获取资源 获取路径
域对象的通用的方法:
context.setAttribute(String name,Object obj); (键,值)
context.getAttribute(String name); 返回Object类型
removeAttribute(String name)
HttpServletResponse(HttpServlet类的响应对象)
用户登录 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的格式返回