第四天(GenericServlet类)


ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现


1.getWriter():返回PrintWriter对象,调用该对象的print()方法,将把print()中的参数打印到浏览器上

		PrintWriter out = response.getWriter();
		out.println("abc");

2.设置响应的内容类型:response.setContentType("application/msword");


3.void sendRedirect(String location):请求的重定向(此方法为HttpServleResponse定义)


例子:

	<form action="Login" method="post">
		user:<input type="text" name="username" />
		pass:<input type="text" name="password" />
		<input type="submit" value="Login" />
	</form> 


	<context-param>
		<param-name>user</param-name>
		<param-value>root</param-value>
	</context-param>
	
	<context-param>
		<param-name>pass</param-name>
		<param-value>123456</param-value>
	</context-param>
	
	<servlet>
		<servlet-name>loginServlet</servlet-name>
		<servlet-class>com.javaweb.gaoting.LoginServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>loginServlet</servlet-name>
		<url-pattern>/Login</url-pattern>
	</servlet-mapping>

	private ServletConfig servletConfig;
	
	public void init(ServletConfig servletConfig) throws ServletException {
		this.servletConfig = servletConfig;
	}

	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		//1
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		//2
		ServletContext servletContext = servletConfig.getServletContext();
		String initUser = servletContext.getInitParameter("user");
		String initPassword = servletContext.getInitParameter("pass");
		//3
		PrintWriter out = response.getWriter();
		if(initUser.equals(username) && initPassword.equals(password)){
			out.print("Success:"+username);
		}else{
			out.print("Error:"+username);
		}
	}


当继承了GenericServlet 代码简化:


public class LoginServlet extends GenericServlet {

	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		//1
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		//2
		String initUser = getServletContext().getInitParameter("user");
		String initPassword = getServletContext().getInitParameter("pass");
		//3
		PrintWriter out = response.getWriter();
		if(initUser.equals(username) && initPassword.equals(password)){
			out.print("Success:"+username);
		}else{
			out.print("Error:"+username);
		}
	}

}

GenericServlet

Servlet接口和ServletConfig接口的实现类,是一个抽象类,其中的service方法为抽象方法

如果新建的Servlet直接继承GenericServlet会使开发更简洁

具体实现:

在GenericServlet中声明了一个ServletConfig类型的成员变量,在init(ServletConfig)方法中对其进行了初始化

利用servletConfig成员变量的方法实现了ServletConfig接口的方法

定义了一个init()方法,在init(ServletConfig)方法中对其进行调用,子类可以直接覆盖init()在其中实现对Servlet的初始化

不建议覆盖init(ServletConfig),因为如果忘记编写super.init(ServletConfig),则会出现空指针异常


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值