完美的javaweb系统除了坚挺的后台还要灵活的javascript--验证与确认

本文介绍了一个基于JSP+Servlet的JavaWeb项目实践案例,涵盖过滤器实现登录拦截、监听器实现访问统计、分页功能、注册页面验证及删除确认等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        UIM“项目"是我迄今为止做的比较完整的javaweb项目,后台采用底层jsp+servlet,包括增删改查,登录,过滤,监听;前端的验证确认,checkbox全选反选,分页较为完整,提取知识点以供今后工作学习使用。

一、过滤器实现登陆拦截

List<String> list=new ArrayList<String>();                                      //不过滤的内容

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
	HttpServletRequest req=(HttpServletRequest) request;
	String url=req.getServletPath();
	if(list.contains(url)){
		chain.doFilter(request, response);
	}else{
	        cm_operator cmo=(cm_operator)req.getServletContext().getAttribute("co");   //从context获取“既存”的cmo对象
		if(cmo!=null){
			chain.doFilter(request, response);
		}else{
			HttpServletResponse res=(HttpServletResponse) response;
			res.sendRedirect("index.jsp");
		}
	}
}

	/**
	 * @see Filter#init(FilterConfig)
	 */
public void init(FilterConfig fConfig) throws ServletException {
	// TODO Auto-generated method stub
	list.add("/index.jsp");
	list.add("/Login.do");
	list.add("/images/index_04.gif");
}
xml文件的内容,拦截.jsp和.do,供参考

  <filter>
    <display-name>loginFilter</display-name>
    <filter-name>loginFilter</filter-name>
    <filter-class>com.whp.filter.loginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>

二、监听器实现访问统计

List<User> list=new ArrayList<User>();
int count=0;
 
   public void attributeAdded(HttpSessionBindingEvent event)  {                                 //在attribute   add的时候触发
         // TODO Auto-generated method stub
    	count++;
    	event.getSession().getServletContext().setAttribute("count", count);                    //设置count,存储count
    	String name=event.getName();                                                            //调用event.getName();方法获得attribute的name
        if(name.equals("user")){
    	   list.add((User)event.getValue());                       
    	   event.getSession().getServletContext().setAttribute("list", list);
       }
    }

/**
  * @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)
  */
   public void attributeRemoved(HttpSessionBindingEvent event)  { 
        count--;
        System.out.println("Attribute已销毁"+event.getSession());
        System.out.println("在线人数"+count);
        list=(List<User>)event.getSession().getAttribute("list");
        event.getSession().getServletContext().setAttribute("list", list);
        
         // TODO Auto-generated method stub
  }
三、分页

1.分页sql

     

select * from w_User limit a,b;
a----从第几条记录开始;

b----查多少个

2.pageInfo类

public class pageInfo {
	int currentPage=1;//当前页号
	int recordCount;//记录总数
	public int pageSize=5;//每页记录数
	String url;
	List <?>list;//所有记录
..................
3.js---setPage()

function page_setPage(currentPage){
	  location.href="${page.url }"+"?currentPage="+currentPage;
}
4.调用setPage方法,实现翻页



四、register页面的验证

  var un=document.getElementById("un");
  var f1=document.getElementById("f1");
  //........
  //........
  /**
    *普通checkInput
    */
  function checkUn(){    
	     if(un.value==""){
		  f1.innerHTML="用户名不能为空";
    	  return false;
    	 }else{
    		 f1.innerHTML="";
    	     return true;
    	 }
     }
     
  
  /**
    *checkRepeatPwd
    */
function checkPwd2(){ if(pwd.value!=pwd2.value){ f3.innerHTML="密码不一致!"; return false; }else{ f3.innerHTML=""; return true; } }
  /**
    *checkRadio
    */

function checkSex(){ var flag=0; for(var i=0;i<sex.length;i++){ if(sex[i].checked){ flag++; } } if(flag!=1){ f4.innerHTML="性别不能为空!"; return false; }else{ f4.innerHTML=""; return true; } }
  /**
    *check正则表达式
    */


function checkEmail(){ var reg=/\w{2,}@\w{2,}\.(com|cn|net)/; if(!reg.test(email.value)){ f6.innerHTML="邮箱格式不符"; return false; }else{ f6.innerHTML=""; return true; } } /**
*切入方法
*/
function index(){ var Rabbit=new Array(); Rabbit[0]=checkEmail(); //....

 var result=0; for(var i=0;i<6;i++){ if(Rabbit[i]){ result++; } } if(result==6){ var form= document.getElementById("form1"); form.method="post"; form.action="register.do"; form.submit(); }else{ alert("请根据要求填写"); } }

注:根据这个小例子,我得出结论:

     1表单.验证最好用 onkeyup();

     2.select无需验证;


五、删除确认

  var del=document.getElementById("delete");   //删除超链接
  
  function deleteUser(id){
	  var flag=confirm("真的要删除吗");
	  if(flag){
		  location.href="delete.do?id="+id;
	  }
  }

六、批量删除:用form+deleteAll.do,表单提交


感谢您的阅读,希望我找到好工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值