【发布时间】:2016-08-24 22:32:16
【问题描述】:
我正在开发一个 JSP MVC Web 应用程序。我对线程安全的 Servlet 概念感到困惑。以下是我的代码,请告诉我它是否线程安全。另外,告诉我为什么它是线程安全的或不是线程安全的。
JSP 代码;
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Personal Profile</title>
</head>
<body>
<form id="PersonalData" method="post" action="PersonalDataServlet">
First Name:<input type="input" name="FirstNameField"><br>
Last Name:<input type="input" name="LastNameField"><br>
Email:<input type="input" name="EmailField">Without @ part<br>
<input type="Submit" value="Submit Data">
</form>
<br>
<br>
<br>
<%
out.print(request.getAttribute("FullName") + "\n");
out.print(request.getAttribute("EmailAddress"));
%>
</body>
</html>
Servlet 代码;
package Servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Model.WelcomeName;
@WebServlet("/PersonalDataServlet")
public class PersonalDataServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String FirstNameServlet;
String LastNameServlet;
String EmailServlet;
FirstNameServlet = request.getParameter("FirstNameField");
LastNameServlet = request.getParameter("LastNameField");
EmailServlet = request.getParameter("EmailField");
System.out.println(FirstNameServlet + "\n" + LastNameServlet + "\n" + EmailServlet);
WelcomeName WelcomeNameObject = new WelcomeName();
WelcomeNameObject.Fullname(FirstNameServlet, LastNameServlet, EmailServlet);
request.setAttribute("FullName", WelcomeNameObject.FullName);
request.setAttribute("EmailAddress", WelcomeNameObject.EmailAddress);
request.getRequestDispatcher("Profile.jsp").forward(request, response);
}
}
用于实际计算或业务逻辑的其他类
package Model;
public class WelcomeName {
public String FullName;
public String EmailAddress;
public void Fullname(String FirstName, String LastName, String Email) {
FullName = (FirstName + " " + LastName);
EmailAddress = (Email + "@gmail.com");
}
}
【问题讨论】:
-
您确实需要阅读一般的多线程和线程安全。参考文献Brian Goetz 的 Java 并发实践。回答此类问题的简单课程还不够。
-
如果您没有更具体的问题;您的输入最好转到 codereview.stackexchange.com ...
标签: java multithreading jsp servlets thread-safety