控制层 Servlet【JavaEE】


Servlet是用Java语言编写的服务器端程序,是由服务器端调用执行、按照Servlet自身规范编写的Java类

Servlet可以处理客户端传来的HTTP请求,并返回响应。

一、Servlet编程接口

设计Servlet要在Servlet框架约束下进行,并遵守其中所要求的规则。

Servlet框架是由javax.servletjavax.servlet.http两个Java包组成。

功能

类和接口

Servlet实现

javax.servlet.http.HttpServlet

Servlet异常

javax.servlet.ServletException

请求和响应

javax.servlet.ServletRequestjavax.servlet.ServletResponse

javax.servlet.ServletInputStreamjavax.servlet.ServletOutputStream

javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponse

会话跟踪

javax.servlet.http.HttpSession

Servlet上下文

javax.servlet.ServletContext

Servlet协作

javax.servlet.RequestDispatcher

二、设计Servlet

设计Servlet需要继承javax.servlet.http.HttpServlet类,其结构:

package …;//省略了包名
import …; //省略了导入包

public class Servlet类名称 extends HttpServlet{
    public void init(){}
    public void doGet (HttpServletRequest request,HttpServletResponse response){}
    public void doPost(HttpServletRequest request,HttpServletResponse response){}
    public void destroy(){}
}

PS:Servlet的父类HttpServlet中包含重要方法:
    doGet():当请求的类型是“get”时,调用该方法。
    doPost():当请求的类型是“post”时,调用该方法。
在设计时只需要重写doGet()和doPost()方法即可,同时配置Servlet。

三、配置Servlet

Servlet只有配置后才可以使用

配置有两种方式 

在webxml配置:直接在源代码中采用注释配置,我们采用注释配置Servlet

注释配置:注释配置Servlet,是在Servlet类定义的上方直接使用注释标记“@WebServlet实现配置。

注释配置格式

@WebServlet("/请求名称")
public class 类名称 extends HttpServlet {
    //实现代码
}

四、使用样例

/**
实现一个简单的用户登录验证程序,
如果用户名是abc,密码是123,则显示欢迎用户的信息,否则显示“用户名或密码不正确”。

采用JSP页面只完成提交信息和验证结果的显示,而验证过程由Servlet完成。
两者之间通过request(或HttpServletRequest)对象实现数据共享。
由提交页面将数据传递给Servlet,
而Servlet获取数据并实现验证,根据验证结果,转向显示验证结果的页面。
假设,组件之间共享数据的参数为:username(用户名称)和userpwd(密码)。
**/
系统需要设计3个组件。

//(1)登录表单页面:login.jsp
<%@ page  pageEncoding="UTF-8"%>
<html>
  <head><title>登录页面</title></head>
  <body>
   <form action="loginCheck" method="post">
       请输入用户名:<input type="text" name="username"/><br/>
       请输入密码:<input type="password" name="userpwd"/><br/>
   <input type="submit" value="登录"/>
   <input type="reset"/>
   </form>
  </body>
</html>
//(2)处理登录请求并验证Servlet:LoginCheckServlet.java
package servlet;

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;

@WebServlet("/loginCheck")
public class LoginCheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;   
    public LoginCheckServlet() {
        super();       
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    	String userName=request.getParameter("username");
	    String userPwd=request.getParameter("userpwd");
	    String info="";
	    if(("abc".equals(userName))&&"123".equals(userPwd)){
	    	info="欢迎你"+userName+"!"; 
	    }else{
	    	info="用户名或密码不正确!";
	    }
	    request.setAttribute("outputMessage", info);
	    request.getRequestDispatcher("/Info.jsp").forward(request,response);
   }
}
//(3)显示提示的页面:info.jsp
<%@ page  pageEncoding="UTF-8"%>
<html>
   <head><title>显示结果页面</title></head>  
   <body> <%=request.getAttribute("outputMessage") %> </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章