gpt4 book ai didi

jquery - Spring MVC JQuery 的问题

转载 作者:行者123 更新时间:2023-12-01 04:50:16 26 4
gpt4 key购买 nike

我正在尝试使用 Jquery 运行 Spring MVC,但我遇到了一些奇怪的问题。每当应用程序启动时,它都会转到添加用户页面。它用于添加用户,而此时 jquery 尚未加载。我在添加用户页面中有一个到显示用户页面的链接,如果我单击显示用户页面,然后使用 Eclipse 浏览器中的后退按钮返回到添加用户页面。然后jquery就可以正常工作了。谁能请问为什么它第一次不起作用,然后在访问显示用户页面后又起作用了?然后它在任何浏览器中都不起作用,给出 jquery 404 异常,只有在 eclipse 中它才起作用。我提供了下面的代码。提前致谢。

package com.raistudies.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.raistudies.domain.User;

@Controller
public class UserListController {

private List<User> userList = new ArrayList<User>();

@RequestMapping(value="/AddUser.htm", method = RequestMethod.GET)
public String showForm() {
return "AddUser";
}

@RequestMapping(value = "/AddUser.htm", method = RequestMethod.POST)
public @ResponseBody
String addUser(@ModelAttribute(value = "user") User user,
BindingResult result) {
System.out.println(" add user controller...");
String str = "";

System.out.println(" User " + user.getName());
System.out.println(" User " + user.getEducation());
if (!result.hasErrors()) {
userList.add(user);
str = "User has been added to the list, total number of users are "
+ userList.size();
} else {
str = "Sorry, an error has occur. User has not been added to list." + result.getAllErrors();
}
System.out.println(" add user controller ends...");
return str;
}

@RequestMapping(value = "/showUsers.htm")
public String showUsers(ModelMap model) {
model.addAttribute("Users", userList);
return "ShowUsers";
}
}


package com.raistudies.domain;

public class User {

private String name;
private String education;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEducation() {
return education;
}

public void setEducation(String education) {
this.education = education;
}
}


under the WebContent i have a folder js - inside that i have jquery.js file.

under the WebContent i have WEB-INF folder, it has jsp and lib folder.

under jsp folder


AddUser.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<html>
<head>
<title>Add Users using ajax</title>
<script src="/AjaxWithSpringMVC2Annotation/js/jquery.js"></script>
<script type="text/javascript">
function doAjaxPost() {
// get the form values
alert('doAjaxPost');
var name = $('#name').val();
alert('name');
var education = $('#education').val();

$.ajax({
type : "POST",
url : "/AjaxWithSpringMVC2Annotation/AddUser.htm",
data : "name=" + name + "&education=" + education,
success : function(response) {
// we have the response
$('#info').html(response);
$('#name').val('');
$('#education').val('');
},
error : function(e) {
alert('Error: ' + e);
}
});
}
</script>
</head>
<body>
<h1>Add Users using Ajax ........</h1>
<table>
<tr>
<td>Enter your name :</td>
<td><input type="text" id="name" name="name"><br /></td>
</tr>
<tr>
<td>Education :</td>
<td><input type="text" id="education"><br /></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="Add Users"
onclick="doAjaxPost()"><br /></td>
</tr>
<tr>
<td colspan="2"><div id="info" style="color: green;"></div></td>
</tr>
</table>
<a href="/AjaxWithSpringMVC2Annotation/showUsers.htm">Show All
Users</a>
</body>
</html>

ShowUser.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Users Added using Ajax</title>
</head>
<body style="color: green;">
The following are the users added in the list :
<br>
<ul>
<c:forEach items="${Users}" var="user">
<li>Name: <c:out value="${user.name}" />; Education: <c:out
value="${user.education}" /></li>
</c:forEach>
</ul>
</body>
</html>

under WEB-INF
app-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<context:component-scan base-package="com.raistudies" />

<mvc:annotation-driven />

<!-- <mvc:resources location="/, classpath:/META-INF/web-resources/"
mapping="/resources/**" />

<mvc:resources mapping="/resources/**" location="/public-resources/" />
-->
<!-- <mvc:resources mapping="/js/**" location="/js/"/> -->

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>AjaxWithSpringMVC2Annotation</display-name>

<servlet>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

under WEB-CONTENT
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:forward page="/AddUser.htm" />

最佳答案

我无法复制您描述的场景。在我的本地设置中从未找到 jquery.js 文件。我无法看到更改页面如何神奇地使文件变得可路由,因为您使用的 Spring 配置不会公开静态资源。

如果您使用 Tomcat 或 Jetty(或者可能是其他 Web 容器),那么有一个“默认”servlet 可用于将静态资源路由到 - 请参阅 How to access static resources when mapping a global front controller servlet on /*

将以下内容添加到web.xml

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
</servlet-mapping>

允许找到 jquery.js

或者在 app-config.xml 中取消注释此行

<mvc:resources mapping="/js/**" location="js/"/>

它使用 Spring 通过 ResourceHttpRequestHandler 公开资源- 参见Configuring Serving of Resources .

其中任何一个都为我解决了404

关于jquery - Spring MVC JQuery 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com