a847244052 2017-05-09 02:14 采纳率: 0%
浏览 816

java ajax没有刷新成制定界面而是跳出一个代码窗口

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- 定义Filter -->
    <filter>
        <!-- 指定Filter的名字,不能为空 -->
        <filter-name>struts2</filter-name>
            <!-- 指定Filter的实现类,此处使用的是Struts2提供的拦截器类 -->
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <!-- 定义Filter所拦截的URL地址 -->
    <filter-mapping>
        <!-- Filter的名字,该名字必须是filter元素中已声明过的过滤器名字 -->
        <filter-name>struts2</filter-name>
            <!-- 定义Filter负责拦截的URL地址 -->
            <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 欢迎页面 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>


package com.action;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
    private static final long serialVersionUID = 1L;
    //name 属性
    private String name;
    //password 属性
    private String password;
    //name属性 getter方法
    public String getName() {
        return name;
    }
    //name属性setter方法
    public void setName(String name) {
        this.name = name;
    }
    //password属性getter方法
    public String getPassword() {
        return password;
    }
    //password属性setter方法
    public void setPassword(String password) {
        this.password = password;
    }
    //重载execute()方法
    public String execute() throws Exception {
        //httpservletresponse 类型变量
        HttpServletResponse response=ServletActionContext.getResponse();
        //设置返回内容类型
        response.setContentType("text/xml;charset=UTF-8");
        //设置头
        response.setHeader("Cache-Control", "no-cache");
        //输出success
        response.getWriter().println("success");
        //检查name password属性
        if(name.equals("tom")&&password.equals("123"))
        {
            response.getWriter().println("welcome login!");

        }else {
            response.getWriter().println("error,please input again!");
        }
        //返回success
        return SUCCESS;
    }
}


 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- 包package struts2_ajax_demo -->   
     <package name="Struts2_AJAX_DEMO" namespace="/" extends="struts-default">
        <!-- login action -->
        <action name="login" class="com.action.LoginAction">
            <!-- result 返回success。jsp -->
             <result>/success.jsp</result>
        </action>            
    </package>
</struts>


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<sx:head/>
 <script type="text/javascript">
 /*定义xmlhttprequest变量*/
 var XHR= false;
 function CreateXHR(){
     try{
            /*检查能否用activexobject*/
            XHR = new ActiveXObject("msxml2.XMLHTTP");
        }catch(e1){
            try{
                /*检查能否用activexobject*/
                XHR = new ActiveXObject("microsoft.XMLHTTP");
            }catch(e2){
                try{
                    /*检查能否用本地javascript对象*/
                    XHR = new XMLHttpRequest();
                }catch(e3){
                    //创建失败
                    XHR = false;
                }
            }
        }
     }   
function sendRequest(){
  //创建xmlhttprequest对象
   CreateXHR();
   if(XHR){
     //创建成功
     //得到name的值
     var name=document.getElementById("name").value;
     //得到password的值
     var password=document.getElementById("password").value;
     //要访问的uri
     var uri="http://localhost:8080/AjaxDemo/login.action?name="+name+"&password="+password;
    //var uri="http://localhost:8080/AjaxDemo/login.action?name=1&password=1";
    //访问open
     XHR.open("GET",uri,true); 
    //设置事件触发器
     XHR.onreadystatechange = resultHander; 
    //发送请求
     XHR.send(null); 
  } 
}
 function resultHander(){
     //检查状态
   if (XHR.readyState == 4 && XHR.status == 200){ 
      //显示提示框
      alert(XHR.responseText);
    }
 } 
</script> 
</head>
<body>
    <center>
        Name: <input type="text" id="name" /><br />
        password: <input type="password" id="password" /><br /> 
        <!-- 单击触发ajax -->
        <input type="button" value="ok" onclick="sendRequest();" />

    </center>
</body>
</html>


package com.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    // TODO Auto-generated method stub

        super.doGet(req, resp);
    }
}


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <center>
        <h2>
          success
        </h2>
    </center>
</body>
</html>


截图
图片说明

  • 写回答

5条回答 默认 最新

  • 半杯凉月 2017-05-09 02:39
    关注

    1、前端代码没格式化太乱了,没人喜欢给你回答这样的问题
    2、alert(XHR.responseText);你直接输出了返回的页面,肯定弹窗了显示源码
    3、建议使用jquery的ajax不要用原生的

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!