GVKun编程网logo

具有JSP / Servlet和Ajax的简单计算器(jsp中用servlet简易计算器)

32

如果您想了解具有JSP/Servlet和Ajax的简单计算器的相关知识,那么本文是一篇不可错过的文章,我们将对jsp中用servlet简易计算器进行全面详尽的解释,并且为您提供关于1.(ajaxSta

如果您想了解具有JSP / Servlet和Ajax的简单计算器的相关知识,那么本文是一篇不可错过的文章,我们将对jsp中用servlet简易计算器进行全面详尽的解释,并且为您提供关于1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?、Ajax + jsp +servlet 中文乱码问题解决办法、Ajax+Jsp+servlet+json技术的使用、ajax+jsp+servlet+mysql实现登陆验证的有价值的信息。

本文目录一览:

具有JSP / Servlet和Ajax的简单计算器(jsp中用servlet简易计算器)

具有JSP / Servlet和Ajax的简单计算器(jsp中用servlet简易计算器)

我想在jsp中创建一个简单的计算器。将有两个用于数字的文本框和一个添加按钮。理想情况下,我希望答案不重新加载就显示在页面中,但是从我得到的答案来看,它似乎对我的规模来说太大了。我可以想到:1)将答案打印到第三个文本框(有可能吗?),或者以某种方式将答案与相同的页面(带有添加按钮和全部)一起加载(并能够输入不同的数字,依此类推)

您能建议一个好的方法吗?

答案1

小编典典

对于我的规模来说似乎太大了

这实际上取决于上下文和功能要求。这是非常简单和琐碎的。它更多的声音一样,它的“太多信息”为你和你实际需要学习不同的概念(HTTP,HTML,CSS,JS,Java和JSP,Servlet的,AJAX,JSON等)
单独
使大局观(所有这些语言/技术的总和)变得更加明显。您可能会发现此答案很有用。

无论如何,这是仅使用JSP / Servlet而不使用Ajax的方法:

calculator.jsp

<form id="calculator" action="calculator" method="post">    <p>        <input name="left">        <input name="right">        <input type="submit" value="add">    </p>    <p>Result: <span id="result">${sum}</span></p></form>

CalculatorServlet其被映射上url-pattern/calculator

@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    Integer left = Integer.valueOf(request.getParameter("left"));    Integer right = Integer.valueOf(request.getParameter("right"));    Integer sum = left + right;    request.setAttribute("sum", sum); // It''ll be available as ${sum}.    request.getRequestDispatcher("calculator.jsp").forward(request, response); // Redisplay JSP.}

使Ajaxical的东西起作用也不难。只需在JSP的HTML中包含以下JS <head>(请向右滚动以查看代码注释,其中解释了每一行的作用):

<script src="http://code.jquery.com/jquery-latest.min.js"></script><script>    $(document).ready(function() {                                                   // When the HTML DOM is ready loading, then execute the following function...        $(''#calculator'').submit(function() {                                         // Locate HTML element with ID "calculator" and execute the following function on its "submit" event...            $form = $(this);                                                         // Wrap the form in a jQuery object first (so that special functions are available).            $.post($form.attr(''action''), $form.serialize(), function(responseText) { // Execute Ajax POST request on URL as set in <form action> with all input values of the form as parameters and execute the following function with Ajax response text...                $(''#result'').text(responseText);                                     // Locate HTML element with ID "result" and set its text content with responseText.            });            return false;                                                            // Prevent execution of the synchronous (default) submit action of the form.        });    });</script>

doPost如下更改最后两行:

    response.setContentType("text/plain");    response.setCharacterEncoding("UTF-8");    response.getWriter().write(String.valueOf(sum));

您甚至可以对其进行条件检查,以便您的表单在用户禁用JS的情况下仍然可以使用:

    if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {        // Ajax request.        response.setContentType("text/plain");        response.setCharacterEncoding("UTF-8");        response.getWriter().write(String.valueOf(sum));    } else {        // Normal request.        request.setAttribute("sum", sum);        request.getRequestDispatcher("calculator.jsp").forward(request, response);    }

1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?

1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?

基本上就是这个问题(括号很重要)

Ajax + jsp +servlet 中文乱码问题解决办法

Ajax + jsp +servlet 中文乱码问题解决办法

相信大家在使用上面的方法的时候肯定遇到多中文乱码的问题,现在就来分享一下我的解决的心得


首先,要让页面支持中文的显示我们就得设置页面的编码为GB2312或者GBK,如下

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


这样页面上面显示中文就没有问题了,但是接下来会发现接受的时候会出现接受中文乱码,我的解决方法是这样的

request.setCharacterEncoding("GBK");

然后后面直接用

request.getParameter();接受中文,完全没有问题(有人也用getBytes 进行转码,我一般不这样用,每个参数都这样转感觉很烦),但是又会发现,一般的表单的数据这样接受没有问题,但是一遇到Ajax 提交数据和这提交json数据来的时候就会又一次出现乱码,这时该怎么解决呢

,没有办法,ajax的数据只能够转码了,

用 String p_name = new String(req.getParameter("p_name").getBytes("GBK"),"UTF-8");获得数据

因为设置了request 设置了GBK(我们之前设置了request.setCharacterEncoding("GBK");),再在转码是把GBK转成UTF-8(我感觉原因是这样的,方法是我不断的实验出的,可行,原因自己猜测的),基本上没有问题了


希望对大家有所帮助

看到这篇文章的个各位,真是对不起,这里本人犯了一个错误,就是在使用request.setCharacterEncoding("GBK");接受中文是有条件的,必须前方是post提交,这个之前说漏了

对不起,这完全是本人的失误

Ajax+Jsp+servlet+json技术的使用

Ajax+Jsp+servlet+json技术的使用

Ajax+Jsp+servlet+json技术的使用

http://blog.sina.com.cn/s/blog_ad188d2b01017bjo.html

ajax+jsp+servlet+mysql实现登陆验证

ajax+jsp+servlet+mysql实现登陆验证

ajax+jsp+servlet+MysqL实现登陆验证

找了很多网上的代码,多半是不能用的,不是这有错就是那有错,只好自己写一个。亲自试验,绝对可以用。
1、首先在MysqL创建一个user的数据库,在user数据库创建一个users的表,设计表,字段为name varchar类型;pass verchar类型;添加数据name 为aa ,pass也是aa。
2、在项目的WebContent–WEB-INF–lib下导入一个数据库连接驱动的jar包,mysql-connector-java-5.1.33-bin.jar网上下载,解压到lib文件夹即可。
3、编写JSP页面。

<div><form id="myform" action="" method="post">
    账号:<span id="tdName">
    <input type="text" id="userName" name="name" />     </span><br><br>
    <span id="pwdBox">                             
    密码:<span id="tdPass">
  <input type="password" id="userPass" name="pass" /></span><br><br>
    </span>
    <span id="state"></span><br>
         <div align="center" id="buttom" >
          <span ><input type="button" onClick="check()" value="登录" /></span>
    </div>
    </form>
    </div>

4、编写AJAX函数check() 和回调函数,放在刚才的JSP页面的head部分。

<script type="text/javascript"> var xmlHttp=false; function createXMLHttpRequest() { if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } } function check(){ createXMLHttpRequest(); //调用创建XMLHttpRequest对象方法 xmlHttp.onreadystatechange=callback; //设置回调函数 nameStr=myform.name.value; passstr=myform.pass.value; var url="check?name="+nameStr+"&pass="+passstr; //向servlet/check发送请求的URL xmlHttp.open("get",url); //向服务器端发送请求 xmlHttp.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8"); xmlHttp.send(null); } function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var str = xmlHttp.responseText; alert(str); if(str.length==2){ //如果返回的字符串长度为2表示用户存在可以登录成功 document.getElementById("state").innerHTML="已登录的用户"; var tdName=document.getElementById("tdName"); tdName.replaceChild(document.createTextNode(nameStr),tdName.firstChild);//替换节点 var tdPass=document.getElementById("pwdBox"); tdPass.innerHTML=""; var trButtom=document.getElementById("buttom"); trButtom.innerHTML='<font color=\"red\">恭喜你成功登录</font> <div> <input type="button" onclick="exit()" value="退出" /></div>'; trButtom.name="yes"; }else{ document.getElementById("state").innerHTML="<font color=\"red\">用户名或密码有误</font>"; } } } } </script>

5、编写servlet

package servlet;
import beans.sqlCheck;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Check extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws servletexception,IOException {
    //获取客户端请求的参数,并进行判断。
        //如果用户存在,返回一个长度为2的字符串,如果用户不存在返回一个长度为1的字符串。
        PrintWriter out = response.getWriter();
        String name=request.getParameter("name");//取得用户名参数
        String pass=request.getParameter("pass");//取得用户密码参数
        sqlCheck sc=new sqlCheck();
        sc.setName(name);//为JavaBean设置name属性
        sc.setPass(pass);// 为JavaBean设置pass属性
        try{
             if(sc.check()){  //如果用户存在
                 out.print("aa");  //返回长度为2的一个字符串
                 request.getSession().setAttribute("name",name );

                 }else{
                out.print("a");  //返回长度为1的一个字符串
                 }
        }catch(Exception e){
            out.print(e.toString());
        } 
        out.flush();
        out.close();

    }
    public void doPost(HttpServletRequest request,IOException {
        doGet(request,response);
    }
}

6、编写sqlCheck类

package beans;
import java.sql.*;

import javax.servlet.servletexception;
import javax.mail.Session;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.Request;

public class sqlCheck {
   private boolean ok=false;//状态变量
   private String name=null;
   private String pass=null;

   public boolean check()throws Exception{
       checksql(this.name,this.pass);
       return this.ok;
   }
   public void setName(String name){
           this.name = name;
   }
   public String getName(){
           return name;
   }
   public void setPass(String pass){
           this.pass = pass;
   }
   public String getpass(){
           return pass;
   }

   //查询数据库,如果数据库没有这个用户就把状态变量设置为false,如果有则设置为true
  private void checksql(String name,String pass) throws Exception{
            Class.forName("com.MysqL.jdbc.Driver");
            String url="jdbc:MysqL://localhost:3306/user?user=root&password=数据库连接密码&characterEncoding=UTF-8";
        Connection con=DriverManager.getConnection(url);
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from users where name='"+name+"' and pass='"+pass+"'");
        if(rs.next()){//表示有记录

// 
                   this.ok=true;

                }else{
                   this.ok=false;
                }
   }
}

`7、配置web.xml“

<servlet-mapping>
    <servlet-name>check</servlet-name>
    <url-pattern>/check</url-pattern>
  </servlet-mapping>
   <servlet>
    <servlet-name>check</servlet-name>
    <servlet-class>servlet.Check</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

“`

关于具有JSP / Servlet和Ajax的简单计算器jsp中用servlet简易计算器的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)之间有什么区别?、Ajax + jsp +servlet 中文乱码问题解决办法、Ajax+Jsp+servlet+json技术的使用、ajax+jsp+servlet+mysql实现登陆验证等相关内容,可以在本站寻找。

本文标签: