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),则会出现空指针异常