java类调用/调用jsp文件

标签 java jsp constructor

在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();
    }

最佳答案

您的代码中存在多个问题。以下是一些建议:

  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/

关于java类调用/调用jsp文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42520512/

相关文章:

java - Jackson 反序列化内部集合

html - 使用请求参数在下拉列表中选择一个选项

java - java中的 View 模型(嵌套或非嵌套)

java - 向秒表类添加暂停和恢复方法

java - 如何将 JButton 添加到行的最后两列单元格?

java - 如何使用命令行工具按类名查找导入完整路径?

java - Spring SimpleFormController - 在成功 View 中包含搜索表单

c# - 使用从单个参数派生的两个参数调用基本构造函数

c++ - 通过两个隐式构造函数构造一个值?

c++ - 编译器什么时候为类的特殊成员提供定义?