Java Spring表单检查输入字符串是否包含特殊字符

时间:2019-02-14 07:12:49

标签: java spring-mvc

我试图创建一个Java Spring表单来检查输入字符串是否包含特殊字符。例如,当用户键入包含特殊字符的字符串时,将弹出一条消息,指出输入的字符串包含特殊字符。

我的问题是如何实现java函数以检查输入字符串中的特殊字符?

型号

 package com.mkyong.customer.model;

public class Customer {
	
	String userName;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
	
}

控制器

package com.mkyong.customer.controller;

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

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.mkyong.customer.model.Customer;

public class TextBoxController extends SimpleFormController{
	
	public TextBoxController(){
		setCommandClass(Customer.class);
		setCommandName("customerForm");
	}
	
	@Override
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {

		Customer customer = (Customer)command;
		return new ModelAndView("CustomerSuccess","customer",customer);
	
	}
	
}

CustomerForm

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<style>
.error {
	color: #ff0000;
}

.errorblock{
	color: #000;
	background-color: #ffEEEE;
	border: 3px solid #ff0000;
	padding:8px;
	margin:16px;
}
</style>
</head>

<body>
<h2>Java Textbox Special Characters</h2>

<form:form method="POST" commandName="customerForm">

<form:errors path="*" cssClass="errorblock" element="div"/>

<table>
<tr>
<td>Keyword:</td>
<td><form:input path="userName" /></td>
<td><form:errors path="userName" cssClass="error" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>

</body>
</html>

客户成功

<html>
<body>
<h2>Java Textbox Special Characters</h2>

Keyword: ${customer.userName}

</body>
</html>

3 个答案:

答案 0 :(得分:0)

您可以列出所有特殊字符,并使用正则表达式进行检查:

Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]"); // fill in any chars that you consider special

if (regex.matcher(stringToCheck).find()) {
    // found
} 

您还可以查看Guava's CharMatcher(无正则表达式且更易读)。您可以像这样构建自己的匹配逻辑:

boolean isAMatch = CharMatcher.WHITESPACE
    .or(CharMatcher.anyOf("[$&+,:;=\\\\?@#|/'<>.^*()%!-]")) // fill in any chars that you consider special
    .matchesAllOf(stringToCheck);

答案 1 :(得分:0)

用于转换特殊字符的单独方法

if(checkSpecialChar("^[^<>{}\"/|;:.,~!?@#$%^=&*\\]\\\\()\\[¿§«»ω⊙¤°℃℉€¥£¢¡®©0-9_+]*$", source){
    // add your staff here
}

public boolean checkSpecialChar(String regex, String source) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(source);
    return matcher.find();

答案 2 :(得分:-1)

在Spring中,您可以像这样获得Form的值:

@RequestMapping(value = "/", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("userName")String username){
    // And now you can check with the regex pattern from hovanessyan if it contains special characters
   Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");
   if (regex.matcher(username).find()) {
      // found
   }
}

希望对您有帮助。