【dubbo reference 源码】【本地库nativelib源码】【网站模板素材源码】setheader 源码

时间:2024-11-28 17:35:53 编辑:43源码补码 来源:QQ反查源码

1.jsp登陆界面源代码
2.使用jquery的jsonp如何发起跨域请求及其原理详解
3.contextmenu和optionmenu的区别

setheader 源码

jsp登陆界面源代码

       1、login.jsp文件

       <%@ page language="java" contentType="text/html; charset=GB"

       pageEncoding="GB"%>

       <%@ page import="java.util.*" %>

       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. Transitional//EN">

       <html>

       <head>

       <title>登录页面</title>

       </head>

       <body>

       <form name="loginForm" method="post" action="judgeUser.jsp">

       <table>

       <tr>

       <td>用户名:<input type="text" name="userName" id="userName"></td>

       </tr>

       <tr>

       <td>密码:<input type="password" name="password" id="password"></td>

       </tr>

       <tr>

       <td><input type="submit" value="登录" style="background-color:pink"> <input

       type="reset" value="重置" style="background-color:red"></td>

       </tr>

       </table>

       </form>

       </body>

       </html>

       2、judge.jsp文件

       <%@ page language="java" contentType="text/html; charset=GB"

       pageEncoding="GB"%>

       <%@ page import="java.util.*" %>

       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. Transitional//EN">

       <html>

       <head>

       <title>身份验证</title>

       </head>

       <body>

       <%

       request.setCharacterEncoding("GB");

       String name = request.getParameter("userName");

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

       if(name.equals("abc")&& password.equals("")) {

       3、afterLogin.jsp文件

       %>

       <jsp:forward page="afterLogin.jsp">

       <jsp:param name="userName" value="<%=name%>"/>

       </jsp:forward>

       <%

       }

       else {

       %>

       <jsp:forward page="login.jsp"/>

       <%

       }

       %>

       </body>

       </html>

       <%@ page language="java" contentType="text/html; charset=GB"

       pageEncoding="GB"%>

       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. Transitional//EN">

       <html>

       <head>

       <title>登录成功</title>

       </head>

       <body>

       <%

       request.setCharacterEncoding("GB");

       String name = request.getParameter("userName");

       out.println("欢迎你:" + name);

       %>

       </body>

       </html>

扩展资料:

       java web登录界面源代码:

       1、Data_uil.java文件

       import java.sql.*;

       public class Data_uil 

       {

       public  Connection getConnection()

       {

       try{

       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

       }catch(ClassNotFoundException e)

       {

       e.printStackTrace();

       }

       String user="***";

       String password="***";

       String url="jdbc:sqlserver://.0.0.1:;DatabaseName=***";

       Connection con=null;

       try{

       con=DriverManager.getConnection(url,user,password);

       }catch(SQLException e)

       {

       e.printStackTrace();

       }

       return con;

       }

       public  String selectPassword(String username)

       {

       Connection connection=getConnection();

       String sql="select *from login where username=?";

       PreparedStatement preparedStatement=null;

       ResultSet result=null;

       String password=null;

       try{

       preparedStatement=connection.prepareStatement(sql);

       preparedStatement.setString(1,username);

       result=preparedStatement.executeQuery();//可执行的     查询

       if(result.next())

       password=result.getString("password");

       }catch(SQLException e){

       e.printStackTrace();

       }finally

       {

       close(preparedStatement);

       close(result);

       close(connection);

       }

       System.out.println("找到的数据库密码为:"+password);

       return password;    

       }

       public  void close (Connection con)

       {

       try{

       if(con!=null)

       {

       con.close();

       }

       }catch(SQLException e)

       {

       e.printStackTrace();

       }

       }

       public  void close (PreparedStatement preparedStatement)

       {

       try{

       if(preparedStatement!=null)

       {

       preparedStatement.close();

       }

       }catch(SQLException e)

       {

       e.printStackTrace();

       }

       }

       public  void close(ResultSet resultSet)

       {

       try{

       if(resultSet!=null)

       {

       resultSet.close();

       }

       }catch(SQLException e)

       {

       e.printStackTrace();

       }

       }

       }

       2、login_check.jsp:文件

       <%@ page language="java" contentType="text/html; charset=utf-8"

       pageEncoding="utf-8"%>

       <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4. Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

       <html>

       <head>

       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

       <title>验证用户密码</title>

       </head>

       <body>

       <jsp:useBean id="util" class="util.Data_uil" scope="page" />

       <%

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

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

       if(username==null||"".equals(username))

       {

       out.print("<script language='javaScript'> alert('用户名不能为空');</script>");

       response.setHeader("refresh",dubbo reference 源码 "0;url=user_login.jsp");

       }

       else

       {

       System.out.println("输入的用户名:"+username);

       String passwordInDataBase=util.selectPassword(username);

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

       if(passwordInDataBase==null||"".equals(passwordInDataBase))

       {

       out.print("<script language='javaScript'> alert('用户名不存在');</script>");

       response.setHeader("refresh", "0;url=user_login.jsp");

       }

       else if(passwordInDataBase.equals(password))

       {

       out.print("<script language='javaScript'> alert('登录成功');</script>");

       response.setHeader("refresh", "0;url=loginSucces.jsp");

       }

       else

       {

       out.print("<script language='javaScript'> alert('密码错误');</script>");

       response.setHeader("refresh", "0;url=user_login.jsp");

       }

       }

       %>

       </body>

       </html>

       3、loginSucces.jsp文件

       <%@ page language="java" contentType="text/html; charset=utf-8"

       pageEncoding="utf-8"%>

       <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4. Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

       <html>

       <head>

       <meta http-equiv="Content-Type" content="text/html; charset=ISO--1">

       <title>Insert title here</title>

       </head>

       <body>

       <hr size="" width="%" align="left" color="green">

       <font size="6" color="red" >登录成功 </font>

       <hr size="" width="%" align="left" color="green">

       </body>

       </html>

       4、user_login.jsp文件

       <%@ page language="java" contentType="text/html; charset=utf-8"

       pageEncoding="utf-8"%>

       <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4. Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

       <html>

       <head>

       <meta http-equiv="Content-Type" content="text/html; charset=ISO--1">

       <title>登录界面</title>

       </head>

       <body  background="C:\Users\win8\workspace\Login\image\9dcbdceab5cfbc_.jpg" >

       <center>

       <br><br><br><br><br><br>

       <h1 style="color:yellow">Login</h1>

       <br>

       <form name="loginForm" action="login_check.jsp" method="post">   

       <table Border="0" >

       <tr >

       <td>账号</td>

       <td><input type="text" name="username"></td>

       </tr>

       <tr>

       <td>密码</td>

       <td><input type="password" name="password">

       </td>

       </tr>

       </table>

       <br>

       <input type="submit" value="登录" style="color:#BC8F8F">

       </form>

       </center>

       </body>

       </html>

使用jquery的jsonp如何发起跨域请求及其原理详解

        前言

       本文主要给大家介绍的是关于jquery jsonp发起跨域请求及其原理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

       跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的。

       浏览器的本地库nativelib源码同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。

       如果协议,端口和主机对于两个页面是相同的,则两个页面具有相同的源,否则就是不同源的。

       如果要在js里发起跨域请求,则要进行一些特殊处理了。或者,你可以把请求发到自己的服务端,再通过后台代码发起请求,再将数据返回前端。

       这里讲下使用jquery的jsonp如何发起跨域请求及其原理。

       先看下准备环境:两个端口不一样,网站模板素材源码构成跨域请求的条件。

       获取数据:获取数据的端口为

       请求数据:请求数据的端口为

       1、先看下直接发起ajax请求会怎么样

       下面是发起请求端的代码:

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        $(document).ready(function () {

        $("#btn").click(function () {

        $.ajax({

        url: 'http://localhost:/student',

        type: 'GET',

        success: function (data) {

        $(text).val(data);

        }

        });

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       请求的结果如下图:可以看到跨域请求因为浏览器的同源策略被拦截了。

       2、接下来看如何发起跨域请求。解决跨域请求的方式有很多,这里只说一下jquery的jsop方式及其原理。

       首先我们需要明白,在页面上直接发起一个跨域的ajax请求是不可以的,但是,在页面上引入不同域上的js脚本却是可以的,就像你可以在自己的面向源码的漏洞页面上使用<img src=""> 标签来随意显示某个域上的一样。

       比如我在端口的页面上请求一个端口的:可以看到直接通过src跨域请求是可以的。

       3、那么看下如何使用<script src="">来完成一个跨域请求:

       当点击"跨域获取数据"的按钮时,添加一个<script>标签,用于发起跨域请求;注意看请求地址后面带了一个callback=showData的参数;

       showData即是回调函数名称,传到后台,用于包裹数据。数据返回到前端后,就是showData(result)的形式,因为是script脚本,所以自动调用showData函数,而result就是scheduler线程转换源码showData的参数。

       至此,我们算是跨域把数据请求回来了,但是比较麻烦,需要自己写脚本发起请求,然后写个回调函数处理数据,不是很方便。

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        //回调函数

        function showData (result) {

        var data = JSON.stringify(result); //json对象转成字符串

        $("#text").val(data);

        }

        $(document).ready(function () {

        $("#btn").click(function () {

        //向头部输入一个脚本,该脚本发起一个跨域请求

        $("head").append("<script src='http://localhost:/student?callback=showData'><\/script>");

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       服务端:

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

        response.setCharacterEncoding("UTF-8");

        response.setContentType("text/html;charset=UTF-8");

        //数据

        List<Student> studentList = getStudentList();

        JSONArray jsonArray = JSONArray.fromObject(studentList);

        String result = jsonArray.toString();

        //前端传过来的回调函数名称

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

        //用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了

        result = callback + "(" + result + ")";

        response.getWriter().write(result);

       }

       结果:

       4、再来看jquery的jsonp方式跨域请求:

       服务端代码不变,js代码如下:最简单的方式,只需配置一个dataType:'jsonp' ,就可以发起一个跨域请求。jsonp指定服务器返回的数据类型为jsonp格式,可以看发起的请求路径,自动带了一个callback=xxx,xxx是jquery随机生成的一个回调函数名称。

       这里的success就跟上面的showData一样,如果有success函数则默认success()作为回调函数。

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        $(document).ready(function () {

        $("#btn").click(function () {

        $.ajax({

        url: "http://localhost:/student",

        type: "GET",

        dataType: "jsonp", //指定服务器返回的数据类型

        success: function (data) {

        var result = JSON.stringify(data); //json对象转成字符串

        $("#text").val(result);

        }

        });

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       效果:

       再看看如何指定特定的回调函数:第行代码

       回调函数你可以写到<script>下(默认属于window对象),或者指明写到window对象里,看jquery源码,可以看到jsonp调用回调函数时,是调用的window.callback。

       然后看调用结果,发现,请求时带的参数是:callback=showData;调用回调函数的时候,先调用了指定的showData,然后再调用了success。所以,success是返回成功后必定会调用的函数,就看你怎么写了。

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        function showData (data) {

        console.info("调用showData");

        var result = JSON.stringify(data);

        $("#text").val(result);

        }

        $(document).ready(function () {

       // window.showData = function (data) {

       // console.info("调用showData");

       //

       // var result = JSON.stringify(data);

       // $("#text").val(result);

       // }

        $("#btn").click(function () {

        $.ajax({

        url: "http://localhost:/student",

        type: "GET",

        dataType: "jsonp", //指定服务器返回的数据类型

        jsonpCallback: "showData", //指定回调函数名称

        success: function (data) {

        console.info("调用success");

        }

        });

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       效果图:

       再看看如何改变callback这个名称:第行代码

       指定callback这个名称后,后台也需要跟着更改。

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        function showData (data) {

        console.info("调用showData");

        var result = JSON.stringify(data);

        $("#text").val(result);

        }

        $(document).ready(function () {

        $("#btn").click(function () {

        $.ajax({

        url: "http://localhost:/student",

        type: "GET",

        dataType: "jsonp", //指定服务器返回的数据类型

        jsonp: "theFunction", //指定参数名称

        jsonpCallback: "showData", //指定回调函数名称

        success: function (data) {

        console.info("调用success");

        }

        });

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       后台代码:

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

        response.setCharacterEncoding("UTF-8");

        response.setContentType("text/html;charset=UTF-8");

        //数据

        List<Student> studentList = getStudentList();

        JSONArray jsonArray = JSONArray.fromObject(studentList);

        String result = jsonArray.toString();

        //前端传过来的回调函数名称

        String callback = request.getParameter("theFunction");

        //用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了

        result = callback + "(" + result + ")";

        response.getWriter().write(result);

       }

       效果图:

       最后看看jsonp是否支持POST方式:ajax请求指定POST方式

       可以看到,jsonp方式不支持POST方式跨域请求,就算指定成POST方式,会自动转为GET方式;而后端如果设置成POST方式了,那就请求不了了。

       jsonp的实现方式其实就是<script>脚本请求地址的方式一样,只是ajax的jsonp对其做了封装,所以可想而知,jsonp是不支持POST方式的。

       <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>

       <html>

       <head>

        <title>跨域测试</title>

        <script src="js/jquery-1.7.2.js"></script>

        <script>

        $(document).ready(function () {

        $("#btn").click(function () {

        $.ajax({

        url: "http://localhost:/student",

        type: "POST", //post请求方式

        dataType: "jsonp",

        jsonp: "callback",

        success: function (data) {

        var result = JSON.stringify(data);

        $("#text").val(result);

        }

        });

        });

        });

        </script>

       </head>

       <body>

        <input id="btn" type="button" value="跨域获取数据" />

        <textarea id="text" style="width: px; height: px;"></textarea>

       </body>

       </html>

       效果图:

       再补充一点,回到第一条:CORS头缺少“Access-Control-Allow-Origin” 。

       有时候你会发现其它都没问题,出现这个错误:这个错误代表服务端拒绝跨域访问。如果出现这个错误,就需要在服务端设置允许跨域请求。

       response.setHeader("Access-Control-Allow-Origin", "*"); 设置允许任何域名跨域访问

       设置可以跨域访问:第6行代码或第8行代码,设置其中一个即可。

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

        response.setCharacterEncoding("UTF-8");

        response.setContentType("text/html;charset=UTF-8");

        // * 表示允许任何域名跨域访问

        response.setHeader("Access-Control-Allow-Origin", "*");

        // 指定特定域名可以访问

        response.setHeader("Access-Control-Allow-Origin", "http:localhost:/");

        //数据

        List<Student> studentList = getStudentList();

        JSONArray jsonArray = JSONArray.fromObject(studentList);

        String result = jsonArray.toString();

        //前端传过来的回调函数名称

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

        //用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了

        result = callback + "(" + result + ")";

        response.getWriter().write(result);

       }

       总结

       jQuery ajax方式以jsonp类型发起跨域请求,其原理跟<script>脚本请求一样,因此使用jsonp时也只能使用GET方式发起跨域请求。跨域请求需要服务端配合,设置callback,才能完成跨域请求。

       好了,

contextmenu和optionmenu的区别

       ä½ å¥½ï¼ŒåŒºåˆ«å¦‚下:

       ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来。

       æ¯”如Edit Text就可以通过长按来弹出拥有“cut”,"copy","paste"等项的ContextMenu。

       å®žçŽ°ContextMenu,一般要用到以下三个方法:

       (1)registerForContextMenu(getExpandableListView());

       (2)onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo);

       (3)onContextItemSelected(MenuItem item);

       >>ContextMenu和OptionsMenu相比主要有以下区别:

       1,ContextMenu必须通过Activity的registerForContextMenu(View)来进行注册,而OptionsMenu不用。

       2,ContextMenu不支持icon,而OptionsMenu支持。

       3,ContextMenu可以有头,可以通过setHeaderIcon,setHeaderTitle,setHeaderView来设置头,否则就没有头。

       4,弹出的方式不一样。

       5,Options Menu的拥有者是Activity,而上下文菜单的拥有者是Activity中的View。

       æ¯ä¸ªActivity有且只有一个Options Menu,它为整个Activity服务。

       è€Œä¸€ä¸ªActivity往往有多个View,并不是每个View都有上下文菜单,这就需要我们调用registerForContextMenu(View view)来指定。

       æ³¨æ„äº‹é¡¹ï¼šContextMenu的任何项在被选中后,整个ContextMenu会自动被系统关闭掉,即使多选项也是这样。这样的话,多选项的行为就有些怪异。查看Android的源码后,发现这是个Android的bug,应该是google没考虑多选项的情况。

       å°½ç®¡ä¸Šä¸‹æ–‡èœå•çš„拥有者是View,生成上下文菜单却是通过Activity中的onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,该方法很像生成Options Menu的onCreateOptionsMenu(Menu menu)方法。

       ä¸¤è€…的不同在于,onCreateOptionsMenu只在用户第一次按“Menu”键时被调用,

       è€ŒonCreateContextMenu会在用户每一次长按View时被调用,而且View必须已经注册了上下文菜单。

       å¦ä¸€ä¸ªå€¼å¾—注意的就是上图中的ContextMenuInfo,该类的对象被传入onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,那么它有什么用呢?有时候,视图元素需要向上下文菜单传递一些信息,比如该View对应DB记录的ID等,这就要使用ContextMenuInfo。需要传递额外信息的View需要重写getContextMenuInfo()方法,返回一个带有数据的ContextMenuInfo实现类对象。

       ä»‹ç»äº†è¿™ä¹ˆå¤šï¼Œä¸‹é¢ç»™å‡ºä¸€ä¸ªdemo演示如何创建和响应上下文菜单:

       1.在activity的onCreate(...)方法中为一个view注册上下文菜单

       2.在onCreateContextMenuInfo(...)中生成上下文菜单。

       3.在onContextItemSelected(...)中响应上下文菜单项。

搜索关键词:微微营销助手源码