servlet 的接口简单应用和filter过滤 用户未登录

本文介绍了如何在Servlet中使用ServletConfig,并通过一个名为ImageServlet的Servlet进行图片链接的处理。同时,展示了Filter的简单实现,特别是UserFilter,用于过滤未登录用户。

1.在servlet 中ServletConfig:

java:ServletConfig c=this.getServletConfig(); String sheng=c.getInitParameter("sheng");System.out.println(sheng);
web.xml:<servlet> <servlet-name>ConfigServlet</servlet-name>  <servlet-class>com.jkx.web.servlet.ConfigServlet</servlet-class>
    <init-param>
      <param-name>sheng</param-name>
      <param-value>yaan</param-value>
    </init-param>
  </servlet>
2.ServletContext :全局,只要不关服务器,数据都有效
web.xml:
 <context-param>
    <param-name>jdbcDriver</param-name>
    <param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>

ServletContext application=this.getServletContext();

String jdbcDriver=application.getInitParameter("jdbcDriver");
System.out.println(jdbcDriver);

String path=application.getRealPath("/i");//得到物理地址并拼接上
System.out.println(path);
String name=(String) application.getAttribute("name");
if(name==null)
{
application.setAttribute("name", "ls");//该代码在第一次使用时name不存在,运行一次后,debug一下可以看到name有值且关闭服务器后再打开仍旧有值
}
Set<String> set=application.getResourcePaths("/js");//列出本项目中指定文件下的文件名
for(String filename:set)
{
System.out.println(set);
}

3.图片的链接(综合应用)

Servlet页面:ImageServlet

package com.jkx.web.servlet;

import java.io.IOException;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public ImageServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ServletContext application=this.getServletContext();
		
		Set<String> set=application.getResourcePaths("/image");//列出本项目中指定文件下的文件名
		for(String filename:set)
		{
			
			System.out.println(set);
		}
		request.setAttribute("image", set);
		request.getRequestDispatcher("/ImageTest.jsp").forward(request, response);
	}

}


jsp:ImageTest.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'ImageTest.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<style type="text/css">

</style>
  </head>
  
  <body>
  
  <c:forEach var="image" items="${image }" varStatus="index">
<c:if test="${index.count==1}"><a href="http://www.baidu.com"></c:if>
<c:if test="${index.count==10}"><a href="http://www.baidu.com"></c:if>
<c:if test="${index.count==24}"><a href="http://www.baidu.com"></c:if>
<img src=".${image }" style="width: 100px;height: 100px"/>
<c:if test="${index.count%5==0}"><br></c:if>
<c:if test="${index.count==1 or index.count==10 or index.count==24}"></a></c:if>



    
    </c:forEach>
 
  </body>
</html>


4.filter简单实现(省略后台数据库的链接)

UserFilter:

package com.jkx.web.filter;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class UserFilter extends HttpServlet implements Filter {


	String encoding=null;

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		
		//解决乱码问题
		if(null!=encoding)
		{
			request.setCharacterEncoding(encoding);
			response.setContentType(encoding);
		}
		chain.doFilter(request, response);

		
		
		HttpServletRequest req=(HttpServletRequest)request;
		HttpServletResponse res=(HttpServletResponse)response;
		PrintWriter out=response.getWriter();
		HttpSession session=req.getSession();
		
		//判断是否未登录页面
		String servletPath=req.getServletPath();

		String path = req.getContextPath();
		String basePath = req.getScheme()+"://"+
		req.getServerName()+":"+req.getServerPort()+path+"/";
		String url=basePath+"index.jsp";
		
		if(session.getAttribute("user")!=null)
		{
			System.out.println(session.getAttribute("user"));
			chain.doFilter(request, response);
		}
		else
		{
			String message="你还没登录!";
			out.println("<script>alert('"+message+"');window.location.href='"+url+"';" +"</script>");
			
		}
		
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		encoding=filterConfig.getInitParameter(encoding);

}
}
LoginServlet:

package com.jkx.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.jkx.dao.UserDao;
import com.jkx.po.User;

public class LoginServlet 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 {

		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter out =response.getWriter();
		String qq=request.getParameter("qq");
		String pass=request.getParameter("pass");
		
		UserDao userdao=UserDao.getIntance();
		User user=userdao.getUserByusernameAndPasswoed(qq, pass);
		if(user!=null)
		{
			List<User> listuser=userdao.getUserList();
			request.setAttribute("userlist", listuser);
			HttpSession session=request.getSession();
			session.setAttribute("user", qq);
			request.getRequestDispatcher("/success.jsp").forward(request,response);
		return ; //结束语句
		}
		else
			{
//			request.getRequestDispatcher("/fail.jsp").forward(request,response);
			response.sendRedirect("/DBconn/fail.jsp");
			return ; //����
			}
	
		
	}

//	public void doPost(HttpServletRequest request, HttpServletResponse response)
//			throws ServletException, IOException {
//
//		response.setContentType("text/html");
//		response.setCharacterEncoding("utf-8");
//		PrintWriter out =response.getWriter();
//		String qq=request.getParameter("qq");
//		String pass=request.getParameter("pass");
//		UserDao userdao=UserDao.getIntance();
//		User user=userdao.getUserByusernameAndPasswoed(qq, pass);
//		if(user!=null)
//		{
//			HttpSession session=request.getSession();
//			session.setAttribute("user", user);
////			request.setAttribute("user", qq);//${user}
////			request.setAttribute("user", user);//${user.username}
//			request.getRequestDispatcher("/success.jsp").forward(request,response);
////			request.getRequestDispatcher("http://www.baidu.com").forward(request,response);//������ת���ⲿ��Ŀ
////			response.sendRedirect("/DBconn/success.jsp");
////			response.sendRedirect("http://www.baidu.com");//����ת���ⲿ��Ŀ
//		return ; //����
//		}
//		else
//			{
////			request.getRequestDispatcher("/fail.jsp").forward(request,response);
//			response.sendRedirect("/DBconn/fail.jsp");
//			return ; //����
//			}
//	
//		
//	}
	
//	public void doPost(HttpServletRequest request, HttpServletResponse response)
//			throws ServletException, IOException {
//
//		response.setContentType("text/html");
//		response.setCharacterEncoding("utf-8");
//		PrintWriter out =response.getWriter();
//		String qq=request.getParameter("qq");
//		String pass=request.getParameter("pass");
//		UserDao userdao=UserDao.getIntance();
//		User user=userdao.getUserByusernameAndPasswoed(qq, pass);
//		if(user!=null)
//			System.out.println("��¼�ɹ�");
//		else
//			System.out.println("��¼ʧ��");
//		
//		out.flush();
//		out.close();
//		
//	}
	
//	public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
//	{
//		response.setContentType("text/html");
//		response.setCharacterEncoding("utf-8");
//		System.out.println(request.getMethod());//��ô��ݷ�ʽ
//		System.out.println(request.getRequestURI());
//		System.out.println(request.getContextPath());
//		String qq=request.getParameter("qq");
//		String pass=request.getParameter("pass");
//		System.out.println(qq+"\n"+pass);
//		PrintWriter out =response.getWriter();
//		out.println("dddddd �����<font color='red'>1111</font>");
//		
//		out.flush();
//		out.close();
//	}

}

index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	  <style type="text/css">
	*{padding:0;margin:0;font-family:"微软雅黑";font-size:14px;}
	#warp{width:900px;height:800px; margin:0 auto;}
	#yx{height:390px;width:340px;border:1px solid #0099ff;border-radius:6px;margin:80px auto;}
	#yx_h{width:340px;height:50px;border-bottom:1px solid #0099ff;background:#00cccc;}
	#yx_h .span1{display:block;height:50px;width:170px;float:left;line-height:50px;text-align:center;cursor:pointer;font-size:16px;}
	#yx_h .span1:hover{background:#339999;}
	#yx_h .span2:hover{background:#339999;}
	#yx_h .span2{display:block;height:50px;width:170px;float:right;line-height:50px;text-align:center;cursor:pointer;font-size:16px;}
	#yx_b{width:290px;height:262px;padding:24px;}
	#yx_b span{width:286px;height:36px;display:block;line-height:36px;}
	#yx_b span input{width:286px;height:36px;border:1px solid #0099ff;margin-top:20px;display:block;padding-left:10px;}
	#yx_b span .chbox{width:18px;height:18px;float:left;line-height:20px;}
	#yx_b span .fot{width:250px;height:36px;display:block;float:right;margin-top:12px;margin-left:10px;font-size:12px;}
	#yx_b span .sub{color:#fff;font-size:16px;background:#0099ff;cursor:pointer;border-radius:5px;}
	#yx_b span .sub:hover{background:#3399cc;}
	#yx_t{width:340px;height:50px;}
	#yx_t span{width:312px;height:20px;display:inline-block;text-align:right;padding-right:24px;color:#0099cc;}
	#yx_t span a{text-decoration:none;color:#0099cc;}
	#yx_t span a:hover{text-decoration:underline;}
  </style>
	
  </head>
  
  <body>
  <form action="LoginServlet" method="post">
    <div id="warp">
		<div id="yx">
			<div id="yx_h">
				<span class="span1">快速登录</span>
				<span class="span2">账号密码登录</span>
			</div>
			<div id="yx_b">
				<span><input type="text" placeholder="支持QQ号/邮箱/手机号登录" name="qq"/></span>
				<span><input type="password" placeholder="QQ密码" name="pass"/></span>
				<span><input type="checkbox" class="chbox"><span class="fot">下次自动登录</span></span>
				<span><input type="submit" class="sub" value="登     录"/></span>
			</div>
			<div id="yx_t">
				<span>
					<a href="javascript:;">忘记密码?</a>  |
					<a href="javascript:;">注册新账号</a> |
					<a href="javascript:;">意见反馈</a>
				</span>
			</div>
		</div>
	</div>
	</form>
  </body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值