Servlet传递表单信息小案例的一些注意问题
项目简介:
包含登录界面(reg.jsp)、表单显示界面(userinfo.jsp)、用户属性封装包(entity.Users)、servlet获取表单数据包(servlet.RegServlet)。
登录界面输入获得的信息,通过servlet获取表单数据,利用userinfo.jsp显示获得的用户信息。
在此记录调试过程中出现的问题:
在eclipse中自动配置servlet时: @WebServlet(name = "RegServlet", asyncSupported = true, urlPatterns = { "/servlet/RegServlet" }) 注意urlPatterns内容为{/包名/servlet类名}
当不加包名时页面报错。
用户类中:对于boolean类型的变量不要以is开头,会导致封装的方法出现一些问题。
登录界面:主要就是form标签中的action属性,使用格式:<form action="servlet/RegServlet"></form>注意为包名加类名
servlet获取表单:利用request.getParameter()方法对单个表单数据进行保存,利用用户类封装的方法对各个属性进行赋值,之后将所有保存的数据利用
request.getSession().setAttribute("regUser", u);保存到session中。/*regUser为自定义的用户名*/,最后跳转到userinfo.jsp页面输出信息(方法:request.getRequestDispatcher("/userinfo.jsp").forward(req,resp);)
表单显示:<jsp:useBean id="regUser" class="entity.Users" scope="session"/> //声明一个JavaBean
<jsp:getProperty name="regUser" property="username"/>//获取信息
补充语法:
<jsp:useBean> 标签可以在JSP中声明一个JavaBean,然后使用。声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。<jsp:useBean>标签的语法格式如下:
<jsp:useBean id="bean 的名字" scope="bean 的作用域" typeSpec/>
下面插入RegServlet的代码以供参考
1 package servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import entity.Users; 12 13 /** 14 * Servlet implementation class RegServlet 15 */ 16 @WebServlet(name = "RegServlet", asyncSupported = true, urlPatterns = { "/servlet/RegServlet" }) 17 public class RegServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 /** 21 * @see HttpServlet#HttpServlet() 22 */ 23 public RegServlet() { 24 super(); 25 } 26 27 /** 28 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 29 */ 30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 31 doPost(request, response); 32 } 33 34 /** 35 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 36 */ 37 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 38 request.setCharacterEncoding("utf-8"); 39 40 System.out.println("1"); 41 Users u = new Users(); 42 String username,mypassword,gender,email,introduce,isAccept; 43 try 44 { 45 username = request.getParameter("username"); 46 mypassword = request.getParameter("mypassword"); 47 gender = request.getParameter("gender"); 48 email = request.getParameter("email"); 49 introduce = request.getParameter("introduce"); 50 if(request.getParameter("isAccept")!=null) 51 { 52 isAccept = "true"; 53 } 54 else 55 { 56 isAccept = "false"; 57 } 58 System.out.println("2"); 59 u.setUsername(username); 60 u.setMypassword(mypassword); 61 u.setEmail(email); 62 u.setGender(gender); 63 u.setIntroduce(introduce); 64 if(isAccept.equals("true")) 65 { 66 u.setFlag(true); 67 } 68 else 69 { 70 u.setFlag(false); 71 } 72 //把注册成功的用户信息保存到session中 73 request.getSession().setAttribute("regUser", u); 74 75 76 System.out.println("3"); 77 request.getRequestDispatcher("/userinfo.jsp").forward(request,response); 78 }catch(Exception e) 79 { 80 e.printStackTrace(); 81 } 82 83 } 84 85 }