精华内容
下载资源
问答
  • java后台打开网页

    千次阅读 2019-07-31 18:46:40
    public static void main(String[] args) throws IOException{ String result = null; try { URL url = new URL("http://localhost:8080/amazon/Img?name=aa"); System.ou...
    public static void main(String[] args) throws IOException{
             String result = null;
            try {
                URL url = new URL("http://localhost:8080/amazon/Img?name=aa");
                System.out.println(url);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            
                conn.setRequestMethod("POST");
                conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1096.1 Safari/536.6");
                conn.setRequestProperty("content-type","application/x-www-form-urlencoded;charset=UTF-8");
                conn.setDoOutput(true);
                if (conn.getResponseCode() == 302) {
                    System.out.println(302);
                
                }
                if (conn.getResponseCode() == 200) {
                    System.out.println(200);
                }
                System.out.println();
                
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
                StringBuffer sb = new StringBuffer();
                String s = "";
                while ((s = rd.readLine()) != null) {
                    sb.append(s);
                }
                // System.out.println(sb);
                if (sb.length() == 0) {
                    sb.append("[]");
                }
                result = sb.toString();
                 System.out.println(result); 
                rd.close();
                conn.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            } 
            
        }

     

    展开全文
  • java后台请求http

    2017-07-27 10:49:16
    java后台请求网页上的http请求 用于java后台调用网络接口等操作
  • 实现简单网页+java后台+数据库对标题和内容进行增删改查
  • 在实现简单网页上对数据内容进行增删改查,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表 我用一个新闻的例子来实现,首先编写java后台程序 java后台程序: 我们用三层的模式进行设计:分别是...

    在实现简单网页上对数据内容进行增删改查,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表

    我用一个新闻的例子来实现,首先编写java后台程序

     

    java后台程序:

    我们用三层的模式进行设计:分别是servlet,service,dao层,并且建立个实体包用来打包数据库和后台要用到的属

    性截个图

    首先是写功能写的顺序分别是从servlet,service,dao层:

    servlet层代码如下:

     

    public class TypeServlet {
    
    	TypeService ts=new TypeServiceImp();//调用service层
    	/*******添加************************************************************************************/
    	public int addtype(String name){
    		int a=0;
    		a=ts.addtype(name);
    		return a;
    	}
    	/*******查看************************************************************************************/
    	public List<types> selets(){
    		List<types> list=new ArrayList<types>();
    		list=ts.selets(null);
    		return list;	
    	}
    	/*******删除************************************************************************************/
    	public int delete(int id){
    		int a=0;
    		types t=new types();
    		t.setId(id);
    		a=ts.delete(t);
    		return a;
    	}
    	/*******修改************************************************************************************/
    	public int update(types t){
    		int a=0;
    		a=ts.update(t);
    		return a;
    	}
    	/*******查找一个************************************************************************************/
    	public types selectone(int id){
    		types t=new types();
    		t.setId(id);
    		types nt=ts.selectone(t);
    		return  nt;
    	}
    }

     

    Service层分为两层分别为接口层和实现层

     

    接口程序如下:

     

    public interface TypeService {
    
    	public int addtype(String name);
    	
    	public List<types> selets(types t);
    	
    	public int delete(types t);
    	
    	public int update(types t);
    	
    	public types selectone(types t);
    	
    }


    接口实现程序:

     

     

    public class TypeServiceImp implements TypeService{
    
    	TypeDao td= new TypeDaoImp();
    	
    	public int addtype(String name) {    //注意返回数据不要忘记修改
    		int a=0;
    		a=td.addtype(name);
    		return a;
    	}
    
    	public List<types> selets(types t) {
    		List<types> list=new ArrayList<types>();
    		list=td.selets(t);
    		return list;
    	}
    	/*******删除************************************************************************************/
    	public int delete(types t) {
    		int a=0;
    		a=td.delete(t);
    		return a;
    	}
    	/*******修改************************************************************************************/
    	public int update(types t) {
    		int a=0;
    		a=td.update(t);
    		return a;
    	}
    
    	/*******查找单个************************************************************************************/
    	public types selectone(types t){
    		types tp=new types();
    		tp=td.selectone(t);
    		return tp;
    		
    	}
    }

     

     

     

    Dao层程序同样分为接口层和实现层

    接口层程序:

     

    public interface TypeDao {
    
    	public int addtype(String name);
    	
    	public List<types> selets(types t);
    	
    	public int delete(types t);
    	
    	public int update(types t);
    	
    	public types selectone(types t);
    	
    }


    实现类程序:

     

     

    public class TypeDaoImp implements TypeDao{
    	Connection con=null;
    	PreparedStatement ps=null;
    	ResultSet rs=null;
    	
    	public int addtype(String name){
    		int a=0;
    		try {
    			//连接数据库
    			con=Shujuku.conn();
    			String sql="insert into typesname values(?)";   //设置id自增
    			ps=con.prepareStatement(sql);
    			ps.setString(1, name);
    			a=ps.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return a;
    	}
    
    	public List<types> selets(types t) {
    		List<types> list=new ArrayList<types>();
    		try {
    			//连接数据库
    			con=Shujuku.conn();
    			String sql="select*from typesname";  
    			ps=con.prepareStatement(sql);
    			rs=ps.executeQuery();
    			while(rs.next()){
    				types ty=new types();
    				ty.setId(rs.getInt("id"));
    				ty.setTypename(rs.getString("typename"));
    				list.add(ty);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return list;
    	}
    	/*******删除************************************************************************************/
    	public int delete(types t) {
    		int a=0;		
    		try {
    			con=Shujuku.conn();
    			String sql="delete from typesname where id="+t.getId();
    			ps=con.prepareStatement(sql);
    			a=ps.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return a;
    	}
    	/*******修改************************************************************************************/
    	public int update(types t) {
    		int a=0;
    		try {
    			con=Shujuku.conn();
    			String sql="update typesname set typename=? where id=?";
    			ps=con.prepareStatement(sql);
    			ps.setString(1, t.getTypename());
    			ps.setInt(2, t.getId());
    			a=ps.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return a;
    	}
    	/*******查找一个************************************************************************************/
    	public types selectone(types t) {
    		types tp=new  types();
    		try {
    			con=Shujuku.conn();
    			String sql="select * from typesname where id=?";
    			ps=con.prepareStatement(sql);
    			ps.setInt(1, t.getId());
    			rs=ps.executeQuery();
    			if(rs.next()){
    				tp.setId(rs.getInt("id"));
    				tp.setTypename(rs.getString("typename"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}	
    		return tp;
    	}
    }

     

     

     

    最后就是数据库包,为了方便使用,将数据库的驱动连接信息建立一个包存放:

    代码如下:

     

    public class Shujuku {
    
    	public static Connection conn(){
    		//定义地址
    		String url="jdbc:sqlserver://localhost:1433;DatabaseName=test;";
    	    //定义连接初始值
    		Connection connection=null;	
    		try {
    			//加载驱动
    			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    			//建立连接
    		     connection=DriverManager.getConnection(url, "sa", "DCX5201314");
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}	
    		return connection;	
    	}
    }


    属性包,代码如下:

     

     

    public class types {
    	private int id;
    	private String typename;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getTypename() {
    		return typename;
    	}
    	public void setTypename(String typename) {
    		this.typename = typename;
    	}
    }

     

     

     

    java后台程序就这么多;

     

    接下来是数据库部分:

    数据库部分主要就是建立一张表,笔者使用的是SQL Server 2008,首先建个数据库test,建立个表typesname,设置两列分别为id typename,id设为主键,int 型,自增为1;typename设置类型为varchar型,不能为空。

     

    好了,数据库和java后台都搭建好了,现在来到前端网页部分,

     

    网页部分

    在myeclipse中新建7个jsp文件

     

    index.jsp是一个总的网页

    设置代码如下:

     

    </head>
    	<frameset rows="20%,80%">
    		<frame src="head.jsp">
    		<frameset cols="20%,80%">
    			<frame src="left.jsp">
    			<frame src="right.jsp" name="rights">
    		</frameset>
    	</frameset>
    	<body>
    	</body>

    head.jsp

     

     

    <body>  
    <h1>这是头部</h1>
    </body>

     

    left.jsp

     

    <body>
        <h1>这是左边</h1>
        <ul>
           <li><a href="addtype.jsp" target="rights">添加新闻类型</a></li>
           <li><a href="showtype.jsp" target="rights">查看新闻类型</a></li>
        </ul>
      </body>

    right.jsp

     

     

    <body>
        <h1>这是右边</h1>
     </body>

    addtype.jsp

     

     

    </head>
      <%
        request.setCharacterEncoding("UTF-8");
        String name= request.getParameter("typename");
        if(name!=null){
        	TypeServlet tp=new TypeServlet();
        	int a=tp.addtype(name);
        	if(a>0){
        		RequestDispatcher rd = request
    			.getRequestDispatcher("showtype.jsp");
        		rd.forward(request, response);
        	}else{
        		RequestDispatcher rd = request
    			.getRequestDispatcher("addtype.jsp");
        		rd.forward(request, response);
        	}
        }
      %>
      <body>
        <h1>添加新闻类型</h1><hr/>
        <form action="addtype.jsp" method="post">
        新闻类型:<input type="text" name="typename"></br>
            <input type="submit" value="提交">
        </form>
      </body>

    showtype.jsp

     

     

    <script type="text/javascript">
    function deletes_(id){
    	 
       var f=confirm("是否确定删除?");
       if(f){
       location.href="showtype.jsp?ids="+id;
       }else{
       alert("您取消删除");
       }
    }
    
    function update(id){
    	location.href="updatetype.jsp?ids="+id;
    }
    </script>
      </head>
      <%
      request.setCharacterEncoding("UTF-8");
      String id=request.getParameter("ids");
      String type=request.getParameter("type");
      if(id!=null){	
    	      TypeServlet ts=new TypeServlet();
    		  int a = ts.delete(Integer.parseInt(id));
    		  response.sendRedirect("showtype.jsp"); 
    	      
      }
       %>
      <body>
        <h1> 展示类型</h1>
        <table border="1">
        <tr><td>编号</td><td>类型名称</td><td>操作</td></tr>
        <%
        //直接调用后台数据
         TypeServlet ts=new TypeServlet();
         List<types> list=ts.selets();
         for(int i=0;i<list.size();i++){
         types n=list.get(i);
         %>
         <tr>
      <td><%=n.getId() %></td>
      <td><%=n.getTypename() %></td>
      <td><input type="button" onclick="update(<%=n.getId() %>)" value="修改"/>
        
         <input type="button" onclick="deletes_(<%=n.getId() %>)" value="删除"/></td>
      </tr>
        <%
         }
         %>
      </body>

    updatetype.jsp

     

    <body>
        <% 
        request.setCharacterEncoding("UTF-8");
         String id=request.getParameter("ids");
        TypeServlet tsl=new TypeServlet();
        types ts=new types();
        String type= request.getParameter("type");
        if(type!=null){
        	String typename=request.getParameter("newtype");//从下面的输入取值
        	String id1=request.getParameter("id");
        	ts.setId(Integer.parseInt(id1));//强转
        	ts.setTypename(typename);
        	int a=tsl.update(ts);
        	response.sendRedirect("showtype.jsp");
        }else{
        	  if(id!=null){
        		     ts=tsl.selectone(Integer.parseInt(id));
        		  }
        		  }
        %>
        
        <h1>修改新闻类型界面</h1>
        <hr/>
        <form action="updatetype.jsp" method="post">
        <input type="hidden" name="type" value="3">
        <input type="hidden" name="id" value="<%=ts.getId() %>">
          新闻类型:<input type="text" value="<%=ts.getTypename() %>" name="newtype"><br/>
          <input type="submit" value="提交">
        </form>
      </body>

     

     

     

    最终项目在tomcat上发布。

    下面的地址积分系统调的太高了,我重新上传了一份内容是一样的地址在这:http://download.csdn.net/download/qq_34178998/10154005

    高积分下载打包文件在这:http://download.csdn.net/download/qq_34178998/9920064

    也可以参考在这篇基础上的两个表关联操作:http://blog.csdn.net/qq_34178998/article/details/77017760

    有问题也希望各位提出,一起进步,

    没积分的留言。留下邮箱,我看到会给你发的,但是太多的,可能会漏发,见谅!!!

    也欢迎转载!!!也欢迎转载!!!也欢迎转载!!!

    需要代码的人多,直接上传百度云了,大家自己下载,喜欢的话给我点个赞 链接:https://pan.baidu.com/s/1YPUWpI4A3Q54V0_d-cunxg 提取码:pzey

    点个赞点个赞点个赞点个赞点个赞

     

     

    展开全文
  • 建议先去查看微信开发官方文档: ... 第一步:用户同意授权,获取code ...code说明 : code作为换取access_token的票据...第二步:通过code换取网页授权access_token 获取code后,请求以下链接获取access_token: ...

    建议先去查看微信开发官方文档:
    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

    第一步:用户同意授权,获取code

    第二步:通过code换取网页授权access_token

    /**
         * 微信浏览器获取用户信息
         * @param code
         * @param state
         * @return
         */
        @GetMapping(value = "/userInfo",produces = "text/html;charset=utf-8")
        public String getUserInformation(String code, String state, HttpServletRequest request) {
            TbUser tbUser = new TbUser();
            if (StringUtils.isEmpty(code)){
                return resultError("code为空");
            }
            JSONObject jsonData = WeixinSign.getAccessToken(code);
            String openid = jsonData.getString("openid");
            String access_token = jsonData.getString("access_token");
            String refresh_token = jsonData.getString("refresh_token");
            HttpSession session = request.getSession();
    
            //验证access_token是否失效
            JSONObject validateData = WeixinSign.getValidateData(access_token, openid);
            if (!"0".equals(validateData.getString("errcode"))){
                //刷新access_token
                JSONObject refreshData= WeixinSign.getRefreshToken(refresh_token);
                access_token = refreshData.getString("access_token");
            }
            JSONObject userData = null;
            try {
                //拉取用户信息
                userData = WeixinSign.getUserInfo(access_token, openid);
                Object unionid = userData.get("unionid");
                Object nickName = userData.get("nickname");
                Object headimgurl = userData.get("headimgurl");
                Object sex = userData.get("sex");
                if (!StringUtils.isEmpty(unionid)) {
                    //用户是否注册过
                    tbUser = tbUserService.selectByUnionid(unionid.toString());
                    if (StringUtils.isEmpty(tbUser)) {
                        tbUser = new TbUser();
                        String userId = UUID.randomUUID().toString().replace("-", "");
                        tbUser.setId(userId);
                        if (!StringUtils.isEmpty(nickName)){
                            tbUser.setNickname(nickName.toString());
                        }
                        if (!StringUtils.isEmpty(headimgurl)){
                            tbUser.setHeadimgUrl(headimgurl.toString());
                        }
                        if (!StringUtils.isEmpty(sex)){
                            tbUser.setSex(new Byte(sex.toString()));
                        }
                        tbUser.setCreateTime(new Date());
                        tbUser.setUnionid(unionid.toString());
                        tbUserService.insertUser(tbUser);
                    }
    
                }
            } catch (Exception e) {
                logger.error("获取用户信息异常:"+e.getMessage());
                return resultError("获取用户信息异常");
            }
            Map map=new HashMap();
            map.put("id",tbUser.getId());
            map.put("unionid",tbUser.getUnionid());
            map.put("headimgUrl",tbUser.getHeadimgUrl());
            map.put("nickname",tbUser.getNickname());
            map.put("sex",tbUser.getSex());
            map.put("province",userData.get("province").toString());
            map.put("city",userData.get("city").toString());
            map.put("openid",userData.get("openid").toString());
            map.put("sessionid",getSession().getId());
            return resultSuccess(map);
        }
    
    • 微信工具类WeixinSign
    package com.sjyx.contest.common.utils;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import org.springframework.util.StringUtils;
    
    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Formatter;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;
    
    public class WeixinSign {
    
    	/**
    	 * 网页
    	 */
    	public static String wy_appid = "wxdee18320bb16f695";
    	public static String wy_secret = "85a6c0d7fdb86f59c386dc99b8a5f3ec";
    
        public static JSONObject getAccessToken(String code){
    		String url = "https://api.weixin.qq.com/sns/oauth2/access_token?";
    		String params = "appid="+wy_appid+"&secret="+wy_secret+"&code="+code+"&grant_type=authorization_code";
    		String result = HttpRequestUtil.httpGet(url + params);
    		JSONObject data = JSON.parseObject(result);
    
    		return data;
    	}
    
    	public static JSONObject getValidateData(String access_token,String openid){
    		String url = "https://api.weixin.qq.com/sns/auth?access_token=" + access_token + "&openid=" + openid;
    		String result = HttpRequestUtil.httpGet(url);
    		JSONObject data = JSON.parseObject(result);
    
    		return data;
    	}
    
    	public static JSONObject getRefreshToken(String refresh_token){
    		String url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" + wy_appid + "&grant_type=refresh_token&refresh_token=" + refresh_token;
    		String result = HttpRequestUtil.httpGet(url);
    		JSONObject data = JSON.parseObject(result);
    
    		return data;
    	}
    
    	public static JSONObject getUserInfo(String access_token,String openid){
    		String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";
    		String result = HttpRequestUtil.httpGet(url);
    		JSONObject data = JSON.parseObject(result);
    
    		return data;
    	}
    }
    
    • Http请求工具类
    package com.sjyx.contest.common.utils;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.IOException;
    import java.net.URLDecoder;
    
    public class HttpRequestUtil {  
        private static Logger logger = LoggerFactory.getLogger(HttpRequestUtil.class);    //日志记录
       
       
        /** 
         * post请求 
         * @param url         url地址 
         * @return 
         */  
        public static String httpPost(String url){  
            //post请求返回结果  
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost method = new HttpPost(url);
            String str = "";  
            try {  
                HttpResponse result = httpClient.execute(method);
                url = URLDecoder.decode(url, "UTF-8");  
                /**请求发送成功,并得到响应**/  
                if (result.getStatusLine().getStatusCode() == 200) {  
                    try {  
                        /**读取服务器返回过来的json字符串数据**/  
                        str = EntityUtils.toString(result.getEntity(),"UTF-8");
                    } catch (Exception e) {  
                        logger.error("post请求提交失败:" + url, e);  
                    }  
                }  
            } catch (IOException e) {  
                logger.error("post请求提交失败:" + url, e);  
            }  
            return str;  
        }  
       
       
        /** 
         * 发送get请求 
         * @param url    路径 
         * @return 
         */  
        public static String httpGet(String url){  
            //get请求返回结果  
             String strResult = null;  
            try {  
                DefaultHttpClient client = new DefaultHttpClient();
                //发送get请求  
                HttpGet request = new HttpGet(url);
                HttpResponse response = client.execute(request);
       
                /**请求发送成功,并得到响应**/  
                if (response.getStatusLine().getStatusCode() == org.apache.http.HttpStatus.SC_OK) {  
                    /**读取服务器返回过来的json字符串数据**/  
                      strResult = EntityUtils.toString(response.getEntity(),"UTF-8");
                } else {  
                    logger.error("get请求提交失败:" + url);  
                }  
            } catch (IOException e) {  
                logger.error("get请求提交失败:" + url, e);  
            }  
            return strResult;  
        }  
    }
    

    刷新access_token(如果需要)

    • 由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
    • 获取第二步的refresh_token后,请求以下链接获取access_token:
      https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
    • 正确时返回的JSON数据包如下:
      {
      “access_token”:“ACCESS_TOKEN”,
      “expires_in”:7200,
      “refresh_token”:“REFRESH_TOKEN”,
      “openid”:“OPENID”,
      “scope”:“SCOPE”
      }

    第四步:拉取用户信息(需scope为 snsapi_userinfo)

    • 如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
    • 请求方法

    http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

    • 参数 描述
      access_token: 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
      openid:用户的唯一标识
      lang: 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
    • 正确时返回的JSON数据包如下:
      {
      “openid”:" OPENID",
      " nickname": NICKNAME,
      “sex”:“1”,
      “province”:“PROVINCE”
      “city”:“CITY”,
      “country”:“COUNTRY”,
      “headimgurl”: “http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46”,
      “privilege”:[ “PRIVILEGE1” “PRIVILEGE2” ],
      “unionid”: “o6_bmasdasdsad6_2sgVt7hMZOPfL”
      }
    • 具体代码第二步已给出

    附:检验授权凭证(access_token)是否有效

    • 请求方法

    http:GET(请使用https协议) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

    • 参数 描述
      access_token: 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
      openid: 用户的唯一标识
    • 正确的JSON返回结果:

    { “errcode”:0,“errmsg”:“ok”}

    展开全文
  • json的java解析工具jar包(maven依赖)(这个不是一定需要的): <!--主要使用jsonobject类,--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</...

    涉及技术

    html+js+jquery+java+tomcat
    json的java解析工具jar包(maven依赖)(这个不是一定需要的):

    <!--主要使用jsonobject类,-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.28</version>
        </dependency>
    

    1,web后台向前端发送json数据

    java本身是没有json数据格式的,利用的是第三方实现的类JSONObject。其实直接向网页传送json字符串也是可以的。

    JSONObject传送:

    //设置字符格式
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    //创建json并向里面添加数据
    JSONObject json=new JSONObject();
    json.put("name","精灵公主");
    json.put("age","18");
    json.put("words","夜空越暗,星星越亮");
    //向请求数据的网页回应数据
    PrintWriter printWriter= null;
    printWriter = response.getWriter();
    printWriter.print(json);
    printWriter.flush();
    printWriter.close();
    

    直接访问得到的是json数据。我自己的servlet类对外访问路径是/QingDataServlet。
    在这里插入图片描述

    html页面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../jq/jquery-3.4.1.min.js"></script>
    
    </head>
    <body>
    
    </body>
    <script>
        $(document).ready(function () {
            $.getJSON("/QingDataServlet",function (datas) {
                console.log(datas);
                for (var data in datas){
                    console.log(data+"="+datas[data]);
                }
            });
        });
    </script>
    </html>
    

    运行调试结果:
    运行结果

    字符串直接传送:

    其实java后台是直接传送json数据格式的字符串。所以我们只要传个json数据的字符串就可以了。比如下面的:
    {“name”:“精灵公主”,“words”:“夜空越暗,星星越亮”,“age”:“18”}

            //设置字符格式
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
    //向请求数据的网页回应数据
            PrintWriter printWriter= null;
            printWriter = response.getWriter();
            printWriter.print("{\"name\":\"精灵公主\",\"words\":\"夜空越暗,星星越亮\",\"age\":\"18\"}");
            printWriter.flush();
            printWriter.close();
    

    验证得到的结果是和上面用JSONObject类得到的效果是一样的。

    2,前端页面向后台传送json

    html页面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../jq/jquery-3.4.1.min.js"></script>
    
    </head>
    <body>
    <button>点我发送</button>
    </body>
    <script>
        $(document).ready(function () {
            $("button").click(function(){
                $.post("/QingDataServlet",{
                "name":"精灵公主","words":"夜空越暗,星星越亮","age":"18"
                    });
                alert("ok");
            });
        });
    </script>
    </html>
    

    请求类路径/QingDataServlet

    //获取所有参数,也可以使用getParameter()获取指定的值
    Enumeration<String> parmNames1 = request.getParameterNames();
    while (parmNames1.hasMoreElements()) {
        String name = (String) parmNames1.nextElement();
        String value = request.getParameter(name);
        System.out.println(name + "=" + value);
    }
    

    请求截图:
    在这里插入图片描述

    附送两张图

    有助于理解request,出自于这位大哥
    request的运行流程
    在这里插入图片描述
    抓包获取的http请求信息
    在这里插入图片描述

    展开全文
  • 简单的登录校验, 我也是初学者 可以供大家看看,为了积分
  • 该压缩包用于通过java代码调用后台无界面浏览器进行HTML截图。 资源包内容如下: 无界面浏览器运行程序 相关js库文件 java示例代码
  • 基于phantomJs的Java后台网页截图技术

    万次阅读 多人点赞 2017-02-14 14:24:45
    基于PhantomJs的Java后台网页截图技术 公司之前做的某一手机应用,里面有一需求是一键出图(有一统计信息类的网页,需要在不打开网页的情况下实时对网页进行截图然后保存到服务器上),手机上便可以查看该图片了...
  • 微信网页后台源码完整版,包含网页鉴权,java语言
  • java实现后台打开网页存为截图 原理很简单
  • 服务器端使用SSH框架用myeclipse开发,提供网页端前台。 也提供处理android请求类 实现登陆,内带说明。
  • Java_后台

    千次阅读 2017-01-12 10:57:02
    Java后台学习 Java后台之路(01)-MySql 数据库定义、控制、操作语言; Java后台之路(02)-MySql 数据库查询语言; Java后台之路(03)-MySql 数据的完整性、约束、表关系; Java后台之路(04)-JDBC 数据库管理工具; ...
  • Java后台开发入门

    万次阅读 2017-05-03 20:16:07
    打开搜索,搜索8080端口内容,将其修改为其他端口就可以了 10,Jsp基础语法   Jsp全名为Java Server Pages,其根本是一个简化的Servlet,实现了在Java中使用Html标签,是一种动态网页脚本技术,也是JavaEE标准。...
  • java后台生成动态二维码

    千次阅读 2019-08-21 10:54:34
    关于java后台生成动态二维码最近为了满足项目经理无理的要求,写了一个生成动态二维码的功能,感觉比较实用,特地拿来与各位头发不多的同胞一起分享,话不多说,直接上菜!!!再往下就是一个专门用于生成二维码的...
  • 完整版java后台管理html模板,可以直接拿来用,样式很华丽!!
  • java后台http请求.rar

    2020-06-02 12:00:02
    java后台请求http,区分get和post,一般是用来抓取带有登陆权限网站的数据,后台先登录,保持session,再请求数据URL
  • java 快速开发
  • Java后台面经

    2018-04-18 16:41:26
    浏览器输入一个网址,打开网页,其中发生了什么,用到了那些协议?6.用C++可以实现Java吗?怎么实现?7.有一千万条短信,其中有重复,现在找出重复次数最多的10条,怎么做?8.301,302代表什么?9.StringBuilder和...
  • java后台html 转excel

    2017-08-25 14:24:11
    该技术从国外某网站上整合而来,仅供参考,勉强可以,但仍需完善
  • 大半年没有写Java代码,没有用eclipse家族的开发工具了,很是怀念用VS写C#,那种一站到底式的开发感觉不要太舒服,但我天生是一个爱折腾的人儿呀。新公司的大牛让我看公司电子商务网站的代码,大脑过了好久才慢慢...
  • 首先在前端页面定义二维码容器,用来存放后台生成的二维码(下面是对应上图中的三个logo图标,放在这里是为了让大家看得更清楚!) <ul> <li><img src="/static/Images/HitArea...
  • 情况:项目中需要利用webview调用写好的java后台网页,并利用网页端的第三方通联支付。   问题一: 前面的网页跳转都能支持,没有任何问题. 当跳转到支付界面的时候,点击”首次使用请安装控件“,有点击...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,227
精华内容 30,890
关键字:

网页java后台

java 订阅