servlet之获取表单数据

编程入门 行业动态 更新时间:2024-10-04 23:33:36

servlet之获取<a href=https://www.elefans.com/category/jswz/34/1771263.html style=表单数据"/>

servlet之获取表单数据

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

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

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

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

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

<form action=""><!--注意这里双引号的内容是处理它的servlet映射地址,也即servlet中@webservlet相同-->
用户名:<input type="text" name="username"><br/> 
<input type="submit" value="提交">
</form>

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文件
<%@ page import="xxx.xxx" %>//包名.类名//写在body,这里用到了javabean,会在之后的博客中介绍(希望我能记得回来加上链接)
//id对应上文set的Attribute,class对应user那个类的完整名称:包名.users
<jsp:useBean id="regUser" class="" scope="session"/>
<table>
<tr><td class="title">用户名:</td><td class="content"> &nbsp; <jsp:getProperty name="regUser" property="username"></td>
</tr>
<tr><td class="title">爱好:</td><td class="content">&nbsp; <%String[] favorites = regUser.getFavovites();for(String f:favorites){ %><%=f%> &nbsp;<%}%></tr>

5.关于路径跳转——相对路径问题(非常重要,不清楚的话很容易404)

①绝对路径

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

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%String path = request.getContextPath();
%>



相对路径
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")

更多推荐

servlet之获取表单数据

本文发布于:2024-02-07 05:58:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753809.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表单   数据   servlet

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!