zoukankan      html  css  js  c++  java
  • jsp---》》》新闻发布系统的项目跟踪+++++++文件上传

    先来一个分层架构图:

    WeebRoot目录下的页面:

    现在,此项目以实现登录,注销,新闻列表,编辑主题》》》》

    先来登录部分的关键代码

     index.jsp中的代码

    userInfoServlet中的全部代码:

    package cn.news.Servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.news.dao.INewsDAO;
    import cn.news.dao.impl.NewsInfoDAOImpl;
    import cn.news.entity.NewsInfo;
    import cn.news.entity.UserInfo;
    import cn.news.service.INewsInfoService;
    import cn.news.service.IUserInfoService;
    import cn.news.service.impl.NewInfoServiceImpl;
    import cn.news.service.impl.UserInfoServiceImpl;
    
    public class UserInfoServlet 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 {
    		//准备新闻数据
    		/*INewsInfoService newsservice =new NewInfoServiceImpl();
    		try {
    			List<NewsInfo> list=newsservice.getAllNews();
    			//放入request作用域
    			request.setAttribute("newsList", list);
    		} catch (SQLException e) {
    			
    		}*/
    		INewsDAO dao=new NewsInfoDAOImpl();
    
    		List<NewsInfo> list=null;
    		try {
    			list = dao.getAllNews();
    			//System.out.println(list.size());
    			request.setAttribute("newsList", list);
    			
    		} catch (SQLException e1) {
    			e1.printStackTrace();
    		}
    
    		
    		
    		String action=request.getParameter("action");
    		if("logout".equals(action)){
    			//执行注销
    			//第一步:先清除session
    			request.getSession().removeAttribute("uname");
    			//第二步:跳转到index.jsp(登录页面)
    			/*response.sendRedirect("/NewsManagerSystem/index.jsp");*/
    			request.getRequestDispatcher("/index.jsp").forward(request, response);
    		}else if("login".equals(action)){
    			//code write here
    			//1.解决乱码
    			request.setCharacterEncoding("utf-8");
    			//2.解析前台传递的表单数据 
    			String uname=request.getParameter("uname");
    			String upwd=request.getParameter("upwd");
    			
    			//拼接成一个用户对象
    			UserInfo info=new UserInfo();
    			info.setUname(uname);
    			info.setUpwd(upwd);
    			
    			IUserInfoService service=new UserInfoServiceImpl();
    					
    			try {
    				boolean flag = service.isLogin(info);
    				
    				if (flag) {  //登录成功
    					
    					//3.记录session
    					request.getSession().setAttribute("uname", uname);
    					//4.转发或者重定向   转发不需要加项目名称
    					request.getRequestDispatcher("/newspages/admin.jsp").forward(request, response);
    					
    				}else {
    					response.sendRedirect("/NewsManagerSystem/index.jsp");
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}else{
    			//第一次访问首页
    			request.getRequestDispatcher("/index.jsp").forward(request,response);
    		}
    		}
    		
    }
    

     

     TopicServlet中的代码

    package cn.news.Servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.news.dao.impl.TopicDAOImpl;
    import cn.news.entity.Topic;
    import cn.news.service.ITopicService;
    import cn.news.service.impl.TopicServiceImpl;
    
    public class TopicServlet 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 {
            //调度Topic的service
            ITopicService service=new TopicServiceImpl();
            try {
                List<Topic> list=service.getAllTopic();
                request.setAttribute("topiclist", list);
                //System.out.println(list.size());
                //转发到列表页
                request.getRequestDispatcher("/newspages/topic_list.jsp").forward(request, response);
            } catch (SQLException e) {
                
            }
        }
    
    }

    topic_list中的代码

     

    文件上传

    需要用到commons-fileupload-1.3.2.jar和commons-io-2.5.jar两个jar文件

    需求:点击提交上传文件

    <%@ 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%>">
    
      </head>
      
      <body>
      <%=path %>
        <form enctype="multipart/form-data" action="<%=path %>/test.jsp" method="post">
                 姓       名: <input name="username"/>
                 选择文件:<input type="file" name="myfile" /> 
                 <input type="submit" value="上传"/>  
        </form>
      </body>
    </html>
    

      

    <%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="java.io.File"%>
    <%@page import="org.apache.commons.fileupload.FileItem"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    
    <%
        request.setCharacterEncoding("UTF-8");
        //将用户传递过来的request中的内容解析出来,判定其类型,如果是常规的普通表单字段,执行处理方式一
        //否则就代表的是文件域,那么执行处理方式二
        //01.判定是普通表单,还是用来上传文件的表单
        boolean flag= ServletFileUpload.isMultipartContent(request);
        if(flag){
            //开始找到一个解析器,来解析请求中的各个项目
            DiskFileItemFactory factory=new DiskFileItemFactory();
            ServletFileUpload upload=new ServletFileUpload(factory);//解析器upload创建成功
            List<FileItem> fileList=upload.parseRequest(request);
            //每一个FileItem都代表一个表单元素
            Iterator<FileItem> myitor=fileList.iterator();
            while(myitor.hasNext()){
               FileItem item=myitor.next();
               if(item!=null){
                   //对当前item进行验证,看它是普通表单还是上传用的文件域
                   if(item.isFormField()){//证明是普通的表单字段
                       //获取该表单元素的内容(value值)
                       String name=item.getFieldName();//这是表单元素的name属性,而不是value值
                       if(name.equals("username")){
                           out.print(item.getString("UTF-8"));
                       }
                   }else{  //是一个文件域
                       String fileName=item.getName();//ef.doc
                       //扔到服务器的目录下
                       String path="/WEB-INF/upload";//文件上传不能用相对路径
                       //将相对路径转换成绝对路径
                       String abosolutePath=this.getServletContext().getRealPath(path);
                       File file=new File(fileName);
                       File uploadFile=new File(abosolutePath,file.getName());
                       item.write(uploadFile);
                       out.print("上传成功");  
                   }
               }
            }
        }
    %>
    
  • 相关阅读:
    网络测量中基于Sketch方法的简单介绍
    Reading SBAR SDN flow-Based monitoring and Application Recognition
    Reading Meticulous Measurement of Control Packets in SDN
    Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
    ovs加dpdk在日志中查看更多运行细节的方法
    后缀数组
    (转载)LCA问题的Tarjan算法
    Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
    Vijos 1816统计数字(计数排序)
    卡特兰数
  • 原文地址:https://www.cnblogs.com/hfddz/p/6767968.html
Copyright © 2011-2022 走看看