servlet之获取表单数据

您所在的位置:网站首页 获取表单内容并显示 servlet之获取表单数据

servlet之获取表单数据

2024-07-10 17:44| 来源: 网络整理| 查看: 265

1.写一个.java文件——实体类(用于储存表单数据)2.写html表单,并使用action将表单提交至对应映射地址3.servlet页面中——覆写dopost或doget4.编写servlet跳转后的页面5.关于路径跳转——相对路径问题(非常重要,不清楚的话很容易404)

1.写一个.java文件——实体类(用于储存表单数据)

假设是一个用户注册的表单,那么就要写一个user.java。它的属性要和能从表单上获得的数据进行对应。

2.写html表单,并使用action将表单提交至对应映射地址

关于表单的介绍可以参考这篇博客:html表单 这里就写一个最简单的表单示例好了:

用户名: 3.servlet页面中——覆写dopost或doget request.setCharacterEncoding("utf-8"); user u = new user(); string username; try { username = request.getParameter("username");//获取字符串 和之前jsp页面中标签的名字对应(name属性) favorites = request.getParameterValues("favorites");//获取字符串数组(用于获取多个复选按钮的值) u.setUsername(username); … //把注册成功的用户对象保存在session中 request.getSession().setAtrribute("regUser",u) //跳转到注册成功页面 request.getRequestDispatcher("../XXX.jsp").forward(request,response);//..表示上一级 request和response这两个参数就是doGet和Post函数的参数 } catch(Exception ex) { ex.printStackTrace(); }

解释一下这里的setAttribute: setAttribute这个方法,在JSP内置对象session和request都有这个方法,这个方法作用就是保存数据,可以用getAttribute方法来取出。 比如现在有个User对象:User curruser = new User("zhangsan", 20, "男");,那么将它保存下来有两种方法: 1. request.setAttribute(“curruser”, curruser) 这个方法是将curruser这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。 2. request.getSession.setAttribute("curruser", curruser) 这个方法和上面唯一的区别就是作用域,就是在整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,。session默认的过期时间是30分钟,过期无效,当然session的过期时间是可以被修改的。(我之后应该也会写session吧..小声bb).

4.编写servlet跳转后的页面

servlet跳转后的jsp页面(也就是上文getRequestDispatcher的XXX.jsp)

//写在开头,import上面的servlet文件 //包名.类名 //写在body,这里用到了javabean,会在之后的博客中介绍(希望我能记得回来加上链接) //id对应上文set的Attribute,class对应user那个类的完整名称:包名.users 用户名: ; 爱好: ; ; 5.关于路径跳转——相对路径问题(非常重要,不清楚的话很容易404)

①绝对路径

绝对路径可以使用path变量: 关于path- 一般置于jsp文档开头(可以看成是项目根目录,/代表的是服务器根目录)

②相对路径 form表单的action中:/代表服务器根目录,而不是项目根目录,也即在写映射地址时不需要在前面加上/(直接写映射地址),如果在最前面加了/则需要写为/项目或者叫工程名/映射地址。区别就是要在中间多写一个工程名。 例如:在映射地址为@webservlet("/loginAction")时,可以这样写:action = "loginAction"或action = "/webProjectName/loginAction"

web.xml文档的url-pattern中:/表示项目根目录,而不再是服务器根目录。 因此在web.xml中配置时需要在最前面加上/,如果在这个文件中写错了的话服务器启动的时候可能就会报错。

请求重定向方式跳转时 /表示服务器根目录,要跳转到项目根目录下的某文件: response.sendRedirect(request.getContextPath()+"/XXX.jsp"); 或者直接response.sendRedirect("XXX.jsp");

请求转发(服务器内部跳转)getRequestDispatcher中的 XX.jsp,/表示的是项目根目录。 此时getRequestDispatcher("xx.jsp")等同于getRequestDispatcher("/xx.jsp")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3