Serlvet的表单处理

来源:互联网 发布:xiaoba勒索软件 编辑:程序博客网 时间:2024/05/21 07:10

Serlvet的表单处理

下面通过大多数应用中最普遍的用户登录验证的例子来说明Servlet的表单处理方法。

1.登录页面

login.html

<HTML>

<BODY>

<H2>Login Page</H2>

<FORM ACTION="/demo/test" METHOD="POST">

<TABLE>

  <TR>

     <TD>Name:</TD>

    <TD><INPUT TYPE='text' NAME='userid'></TD>

 </TR>

<TR>

  <TD>Password:</TD>

 <TD><INPUT TYPE='password' NAME='passwd'></TD>

</TR>

</TABLE>

<INPUT TYPE='submit' value="submit">

</FORM>

</BODY>

</HTML>

这是登录页面,在此处要注意表单中各组件的变量命名,该命名关联到后面程序的取值,所以务必要遵循Java的命令规范。另外,还要注意这里form表单action属性的值,如果以“/”开头,则由工程名+URL组成,也可以不加“/”直接用URL即可。

2.Web工程配置文件

web.xml

<?xml version="5.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

  <servlet>

    <servlet-name>LoginServlet</servlet-name>

    <servlet-class>bean.LoginServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>LoginServlet</servlet-name>

    <url-pattern>/test</url-pattern>

  </servlet-mapping>

</web-app>

这是Web程序的配置程序,前面介绍过它的重要性,一定要注意servlet元素和servlet-mapping元素的前后顺序,还要注意url-pattern元素值一定要以“/”开头,其后面的变量名即可访问的URL值。

web.xml文件说明如下。

(1)文件的位置。该文件总是放置在WEB-INF中。

(2)基本格式。该文件的开头是XML标头和DOCTYPE声明,并且含有一个web-app元素。

(3)给servlet命名。使用servlet及其子元素servlet-name和servlet-class。

(4)给servlet指定URL。使用servlet-mapping 及其子元素servlet-name和url-pattern。

(5)xml加载。服务器在启动时读取web.xml文件,代码如下所示:

<?xml version="5.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

    version="2.4">

            // ------------------------ 要修改的部分 --------------------------------- //

    <servlet>

        <servlet-name>在此处给servlet程序取个名字</servlet-name>

        <servlet-class>在此处采用包名.类名</servlet-class> //一定要写包名

    </servlet>

    <servlet-mapping>

        <servlet-name>此处的servlet名字与上面取的servlet名字一致</servlet-name>

        <url-pattern>/别名</url-pattern>     //此处是为servlet取的别名,前面加上'/'; 如: /hello  (在浏览器中输入为 ---项目目录/hello)

</servlet-mapping>

</web-app>

注意:修改一次web.xml配置必须重启服务器,否则达不到修改后的效果,必须将所有的Servlet元素放置在任何servlet-mapping元素之前,不能相互混合。

3.Servlet处理表单提交的类

LoginServlet.java

package bean;

 

import javax.servlet.http.HttpServlet;

 

import javax.servlet.http.HttpServletRequest;

 

import javax.servlet.http.HttpServletResponse;

 

import java.io.IOException;

 

import java.io.PrintWriter;

 

public class LoginServlet extends HttpServlet {

 

    public void doPost(HttpServletRequest request,

    HttpServletResponse response)

 

    throws IOException {

 

        String userid = request.getParameter("userid");

 

       //从页面login.html中得到提交过来的参数值

        String passwd = request.getParameter("passwd");

 

        response.setContentType("text/html; charset=GB2312");

 

        PrintWriter out = response.getWriter();

 

 

        if (passwd.equals("scwcd")) {

 

            out.println("<HTML>");

 

            out.println("<TITLE>Login Servlet</TITLE>");

 

            out.println("<BODY>");

 

            out.println(" Welcome, " + userid);

 

            out.println("</BODY>");

 

            out.println("</HTML>");

 

        }else {

            out.println("<HTML>");

 

            out.println("<TITLE>Login Servlet</TITLE>");

 

            out.println("<BODY>");

 

            out.println(" Login Falure!!");

 

            out.println("</BODY>");

 

            out.println("</HTML>");

        }

    }

}

从请求中获取值,使用了HttpServletRequest对象的getParameter方法,它的返回类型为String类型,所以如果涉及到类型转换,需要首先判断是否为Null值,应该避免空指针问题。

原创粉丝点击