2017-02-28 53 views
1

在netbeans中创建一个web服务器与我有3个文件index.jsp,response.jsp和client.java。 的想法是创建一个温度转换器,但只需要输入,而不是做计算器的工作。 请任何帮助!?java类调用/调用jsp文件

的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

<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> 

client.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(); 
    } 
+0

您需要将请求转发到从JSP模型的逻辑,再往前一个响应页面。查看“模型 - 视图 - 控制器”(MVC),特别是旧的“模型2”架构。一分钟或三次搜索后,我发现这些链接: https://en.wikipedia.org/wiki/JSP_model_2_architecture http://www.javaworld.com/article/2076557/java-web-development/understanding-javaserver -pages-model-2-architecture.html –

回答

0

你在你的代码的多个问题。下面是一些建议:

  1. 比赛中index.htmlSortClient.java输入名称,以避免混淆和简化属性分配
  2. 所有字段创建setter和getter否则jsp:setPropertyjsp:getProperty将无法​​正常工作
  3. 讲究对您的数据类型:String没有nextDouble()。如果你还没有请使用IDE(Eclipse,Netbeans,Intellij等)的帮助。
  4. 删除不必要的库和代码,例如。 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/

+0

感谢您的帮助!所以我还没有学会解析,我的老师告诉我使用3套和1个吸气剂!? –

+0

如果你不在'response.jsp'中显示输入(通过调用'jsp:getProperty' ) –