当前位置 : 主页 > 编程语言 > java >

jsp(8):Servlet的简单使用,处理表单信息

来源:互联网 收集:自由互联 发布时间:2021-06-25
我们都知道有get\post两种传递表单信息的方式,其实每一次提交表单,服务器都会通过servlet去处理这些数据。 可以利用这一点,自定义一个servlet,然后自己写代码根据get/post去处理相应

我们都知道有get\post两种传递表单信息的方式,其实每一次提交表单,服务器都会通过servlet去处理这些数据。

可以利用这一点,自定义一个servlet,然后自己写代码根据get/post去处理相应的数据操作啦。

在Java Resource的src包下创建一个包,例如myservlet包,再在这个包下右键新建一个servlet类,取名字为FirstServlet

可以看到这个servlet长这样:

package myservlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class First
 */
@WebServlet("/FirstServlet")
public class First extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public First() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

做一个用servlet取到表单的用户名的小demo。。。

先简单写一个login.jsp:

...
<body>
<form action="FirstServlet" method="get">
	登录名<input name="username"> 
	<input type="submit" value="登录">
</form>
</body>
....

改一下FirstServlet:

package myservlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet("/FirstServlet")	//这个名字可以改变,但是相应的jsp中的名字也要改变
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 String name = request.getParameter("username");
		 response.getWriter().append("my name is:" + name);	 
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 
	}

}

输入:me

输出:my name is:me


假如我们想要处理,当用户登陆后,转到welcom.jsp页面,有两种跳转方式,可以直接在servlet中添加代码如下:

1。response.sendRedirect("welcom.jsp");        //带参数转发的时候不要用这个跳转

2。request.getRequestDispatcher("welcom.jsp").forward(request, response);

如果我们的jsp页面不是在WebContent目录下,而是WebContent的子目录下,例如WebContent->index->jsp文件。

那我们在表单中提交到的页面就不能写form action="LoginServlet",相应的要改成”../LoginServlet“,否则访问不到。


另外,在Servlet代码中有一段:@WebServlet("/LoginServlet")

这个其实就是配置文件,当然,我们可以在WEB-INF目录下创建一个web.xml来代替它。

例如我们可以在web.xml中,设置FirstServlet的url-mapping=First,那么我们在login.jsp就可以通过First,而不是FirstServlet访问了。当然,在我们新建servlet的时候,输入类名后点击next而非finish也可以看到url-mapping,去修改。

网友评论