在netbeans中创建一个网络服务器,我有3个文件index.jsp、response.jsp和client.java。 这个想法是创建一个温度转换器,但只接受输入而不执行计算器工作。 请帮忙!?
index.jsp
<form name="Input Form" id="ftemp" action="response.jsp">
<input type="text" name="temp" />
<select name="conv1">
<option>Celsius</option>
<option>Fahrenheit</option>
</select>
<select name="conv2">
<option>Fahrenheit</option>
<option>Celsius</option>
</select>
<input type="submit" value="Submit" />
</form>
响应.jsp
<body>
<h1>your list is in order</h1>
<jsp:useBean id="sortbean" scope="session" class="sortclient.SortClient" />
<jsp:setProperty name="sortbean" property="input" />
<jsp:setProperty name="sortbean" property="cel" />
<jsp:setProperty name="sortbean" property="fahr" />
<jsp:getProperty name="sortbean" property="input" />
</body>
客户端.java
public class SortClient {
private String input;
double cel = 0;
double fahr = 0;
public SortClient (){
input = null;
}
public String getInput() {
try{
String key = getKey();
input = mergeSort (input,key);
double tempCelsius = input.nextDouble();
double tempFahrenheit = input.nextDouble();
return input;
}catch (Exception ex){
System.out.println(ex); //we would log this
return "That is not a valid list";
}
}
public void setInput(String input) {
this.input = input;
}
public double toCelsius( double tempFahrenheit )
{
return ((5.0 / 9.0) * ( tempFahrenheit - 32 ));
}
public double toFahrenheit( double tempCelsius )
{
return (tempCelsius * 9.0 / 5.0) + 32;
}
private static String mergeSort(java.lang.String input, java.lang.String userKey) {
org.tempuri.Service service = new org.tempuri.Service();
org.tempuri.IService port = service.getBasicHttpBindingIService();
return port.mergeSort(input, userKey);
}
private static String getKey() {
org.tempuri.Service service = new org.tempuri.Service();
org.tempuri.IService port = service.getBasicHttpBindingIService();
return port.getKey();
}
最佳答案
您的代码中存在多个问题。以下是一些建议:
- 匹配
index.html
和SortClient.java
中的输入名称,以避免混淆并简化属性分配 - 为所有字段创建 setter 和 getter,否则
jsp:setProperty
和jsp:getProperty
将不起作用 - 请注意您的数据类型:
String
没有nextDouble()
。如果您还没有,请使用 IDE(Eclipse、Netbeans、Intellij 等)帮助。 - 删除不必要的库和代码,例如。
org.tempuri.*
以下是实现上述建议的代码:
index.jsp
<form name="Input Form" id="ftemp" action="response.jsp">
<input type="text" name="temp" />
<select name="conv1">
<option>Celsius</option>
<option>Fahrenheit</option>
</select>
<select name="conv2">
<option>Fahrenheit</option>
<option>Celsius</option>
</select>
<input type="submit" value="Submit" />
</form>
response.jsp
<h1>your list is in order</h1>
<jsp:useBean id="sortbean" scope="session" class="sortclient.SortClient" />
<jsp:setProperty name="sortbean" property="*" />
Input: <jsp:getProperty name="sortbean" property="temp" /><br>
Conv1: <jsp:getProperty name="sortbean" property="conv1" /><br>
Conv2: <jsp:getProperty name="sortbean" property="conv2" /><br>
Result: <jsp:getProperty name="sortbean" property="result" />
SortClient.java
package sortclient;
public class SortClient {
private String temp;
private String conv1;
private String conv2;
private Double result;
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getConv1() {
return conv1;
}
public void setConv1(String conv1) {
this.conv1 = conv1;
}
public String getConv2() {
return conv2;
}
public void setConv2(String conv2) {
this.conv2 = conv2;
}
public Double getResult() {
result = Double.parseDouble(temp);
if (conv1.equalsIgnoreCase(conv2)) {
return result;
} else if (conv2.equalsIgnoreCase("Celsius")) {
return toCelsius(result);
} else if (conv2.equalsIgnoreCase("Fahrenheit")) {
return toFahrenheit(result);
}
return 0.0;
}
public double toCelsius(double tempFahrenheit )
{
return ((5.0 / 9.0) * ( tempFahrenheit - 32 ));
}
public double toFahrenheit( double tempCelsius )
{
return (tempCelsius * 9.0 / 5.0) + 32;
}
}
引用this tutorial获取详细指南。
正如其他人所建议的,这种方法实际上被认为是过时的,因为它是紧密耦合的并且无法大规模维护。因此,我还建议您从教程中学习 MVC 模式,例如:
http://courses.coreservlets.com/Course-Materials/csajsp2.html http://www.thejavageek.com/2013/08/11/mvc-architecture-with-servlets-and-jsp/
关于java类调用/调用jsp文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42520512/