不用说,对于网站开发来说都是基础。
工程用到的页面
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<!-- <form action="loginServlet"> -->
<form action="countServlet">
用户名:<input type="text" name="username"><br>
密码: <input type="password" name="password"><br>
<input type="submit" value="登陆">
</form>
</body>
</html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
成功页面!!!
</body>
</html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
失败页面!!!
</body>
</html>
用到的javabean
package test.lindl.bean;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class User implements HttpSessionBindingListener {
private String username;
private String password;
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void valueBound(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
System.out.println("*********valueBound*********");
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
System.out.println("*********valueUnbound*********");
}
}
工程的配置文件web.xml,监听器和过滤器都要在这里配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>test.lindl.listener.StartListener</listener-class>
</listener>
<listener>
<listener-class>test.lindl.listener.MyServletRequestListener</listener-class>
</listener>
<listener>
<listener-class>test.lindl.listener.MyServletContextAttributeListener</listener-class>
</listener>
<listener>
<listener-class>test.lindl.listener.MyHttpSessionListener</listener-class>
</listener>
<filter>
<filter-name>characterFilter</filter-name>
<filter-class>test.lindl.filter.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>test.lindl.filter.LoginServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>CountServlet</servlet-name>
<servlet-class>test.lindl.servlet.CountServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CountServlet</servlet-name>
<url-pattern>/countServlet</url-pattern>
</servlet-mapping>
</web-app>
几个监听器
package test.lindl.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("**********sessionCreated**********");
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("***********sessionDestroyed**********");
}
}
package test.lindl.listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements
ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("****************attributeAdded**************");
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("**************attributeRemoved****************");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("***************attributeReplaced***************");
}
}
package test.lindl.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class MyServletRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("**********requestDestroyed*****************");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("*******requestInitialized************");
}
}
控制工程编码的过滤器,设置编码方式为utf-8,就不会出现中文乱码
package test.lindl.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("CharacterFilter destroy");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("CharacterFilter doFilter");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//放行
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
System.out.println("CharacterFilter init");
}
}
统计登录次数的例子,全局监听器
package test.lindl.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class StartListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
int count = (Integer) sce.getServletContext().getAttribute("count");
count -= 1;
sce.getServletContext().setAttribute("count", count);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("count", 1);
}
}
判断用户名和密码是否匹配的业务逻辑
package test.lindl.service;
import test.lindl.bean.User;
public class UserService {
public User findUserByNameAndPwd(String username, String pwd) {
if (username == null || "".equals(username) || pwd == null
|| "".equals(pwd)) {
return null;
} else {
User user = new User(username, pwd);
return user;
}
}
}
<pre name="code" class="java">package test.lindl.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import test.lindl.bean.User;
import test.lindl.service.UserService;
public class CountServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
UserService userService=new UserService();
User user=userService.findUserByNameAndPwd(username, password);
String path="";
Integer count=0;
if(user==null){
path="/error.jsp";
}else{
count=(Integer) getServletContext().getAttribute("count");
getServletContext().setAttribute("count", count+1);
path="/success.jsp";
System.out.println("第"+count+"次登陆!!");
}
request.getRequestDispatcher(path).forward(request, response);
}
}