JFinal form表单提交请求参数的获取问题

使用JFinal时候遇到两个问题,很隐蔽,折腾了半天,拿出来分享,希望能让大家不再继续纠结。


现象:无法获取前端表单提交的请求参数,后台使用getPara("paramName")输出为null.

原因:网上查阅得知,此问题仅在Tomcat下出现,主要是因为如果actionKey和webroot下页面存储目录同名,

比如actionKey为login,恰好webroot下有login目录,tomcat 会将你的请求重定向到?(我也不知道定向到哪里了,应该是webroot下那个同名目录。)


解决方法:在配置Route的时候actionKey和webroot下目录名不要重名,例如

    @Override
    public void configRoute(Routes me) {

        me.add("/token",TokenControler.class,"_token");
    }


另外,在文件上传表单中如果存在其他请求参数,在后端处理时,要先处理file请求,再处理其他请求参数,

否则同样获取不到其他参数。

1 UploadFile uploadFile = getFile();

2 Striing otherParam = getPara("otherParamName");


  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用form表单请求servlet绘制图形,需要在HTML页面上创建一个form表单,并在该表单中设置action属性为servlet的URL,并设置method属性为POST或GET。 例如,以下是一个简单的HTML页面,它包含一个form表单和一个提交按钮: ```html <!DOCTYPE html> <html> <head> <title>绘制图形</title> </head> <body> <form action="MyServlet" method="post"> <label for="shape">选择图形:</label> <select name="shape" id="shape"> <option value="circle">圆形</option> <option value="rectangle">矩形</option> <option value="triangle">三角形</option> </select> <br/><br/> <input type="submit" value="绘制图形"> </form> </body> </html> ``` 在此示例中,我们创建了一个form表单,它包含一个选择框,用户可以从中选择要绘制的图形类型。当用户单击“绘制图形”按钮时,提交表单将触发名为“MyServlet”的servlet的POST请求。 然后,我们可以在servlet中获取表单参数,并使用Java绘图库(如Java 2D)绘制所选图形。下面是一个简单的示例servlet,它将根据用户选择绘制圆形、矩形或三角形: ```java import java.io.IOException; import java.io.PrintWriter; import java.awt.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; public MyServlet() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String shape = request.getParameter("shape"); out.println("<html><head><title>绘制图形</title></head><body>"); if(shape.equals("circle")) { out.println("<h1>圆形</h1>"); drawCircle(out); } else if(shape.equals("rectangle")) { out.println("<h1>矩形</h1>"); drawRectangle(out); } else if(shape.equals("triangle")) { out.println("<h1>三角形</h1>"); drawTriangle(out); } out.println("</body></html>"); out.close(); } private void drawCircle(PrintWriter out) { // 使用Java 2D绘制一个圆形 } private void drawRectangle(PrintWriter out) { // 使用Java 2D绘制一个矩形 } private void drawTriangle(PrintWriter out) { // 使用Java 2D绘制一个三角形 } } ``` 在此示例中,我们在servlet的doPost方法中获取表单参数,并根据用户选择调用适当的绘图方法。这些方法使用Java 2D库绘制所选图形,并将结果写入PrintWriter对象以在HTML页面上显示。 注意,这只是一个简单的示例,你可能需要根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值