servlet 3.0

  1. 關於servlet3.0 介紹很少說,直接進入開發主題javascript



    先寫個登錄頁面,代碼以下html

  2.  index.jsp 頁面
    java

  3. <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
     <%
     	String msg = request.getParameter("msg");
     %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  4. "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <title>用戶登錄</title>
    </head>
    <body>
    	<form action="login" method="post" style="text-align: center;">
    		<h1>用戶登錄</h1>
    		用戶名:<input type="text" name="username">
    		<br/>
    		密  碼:<input type="password" name="password">
    		<br/>
    		<input type="submit" value="登錄"><br/>
    		<span id="msg"><%=msg %></span>
    	</form>
    	<script type="text/javascript">
    		var msg = <%=msg%>;  
    		if(msg==null){
    			document.getElementById("msg").style.display = "none";
    		}
    	</script>
    </body>
    </html>

    原來須要在web.xml中配置,以下,在servlet3.0中經過註解功能,再也不須要web.xml配置web

  5. <servlet>
      	<servlet-name>login</servlet-name>
      	<servlet-class>com.action.Login</servlet-class>
      </servlet>
      <servlet-mapping>
      	<servlet-name>login</servlet-name>
      	<url-pattern>/login</url-pattern>
      </servlet-mapping>

    servlet 代碼以下session

  6. package com.action;
    
    import java.io.IOException;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @author zhuweishi
     * @version 1.1.0 
     */
    /*
     * @SuppressWarnings 表示不提示警告信息
     * @WebServlet 
     *     name 至關於web.xml中servlet的servlet-name
     *     urlPatterns  servlet-maring 中的url-pattern
     *     loadOnStartup  加載順序
     *     inintParams 初始值
     */
    @SuppressWarnings("serial")
    @WebServlet(name="Test",urlPatterns={"/login","/test/login"},loadOnStartup=1,
  7. initParams={@WebInitParam(name="usname",value="張三")})
    public class Login extends HttpServlet{
    	
    	@Override
    	public void init(ServletConfig config) throws ServletException {
    		
    		//ServletConfig config = this.getServletConfig();
    		String usname = config.getInitParameter("usname");
    		System.out.println(usname+"-----");
    	}
    	
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
    			throws ServletException, IOException {
    		
    		String username = req.getParameter("username");
    		String password = req.getParameter("password");
    		System.out.println(username+"==="+password);
    		
    		resp.setCharacterEncoding("UTF-8");
    		if("sysadmin".equals(username)){
    			if("000000".equals(password)){
    				// 設置做用域
    				req.setAttribute("username", username);
    				//轉發
    				req.getRequestDispatcher("/login.jsp").forward(req,resp);
    			}else{
    				String msg = java.net.URLEncoder.encode("密碼錯誤!", "utf-8");
    				resp.sendRedirect(req.getContextPath()+"/index.jsp?msg="+msg);
    			}
    		}else{
    		        // 解決中文亂碼
    			String msg = java.net.URLEncoder.encode("用戶名錯誤!", "utf-8");
    			resp.sendRedirect(req.getContextPath()+"/index.jsp?msg="+msg);
    		}
    	}
    	
    }

寫一個 中文亂碼的Filterapp

    

package com.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;
import javax.servlet.annotation.WebFilter;

/*
 * 原來 web.xml 配置
 *    <filter>
 *      <filter-name>UTFFilter</filter-name>
 *     <filter-class>com.action.UTFFilter</filter-class>
 *  	   <init-param>
 *  	   	  <param-name>enconding</param-name>
 *  	   	  <param-value>UTF-8</param-value>
 *  	   </init-param>
 *  </filter>
 *  <filter-mapping>
 *      <filter-name>UTFFilter</filter-name>
 *      <url-pattern>/*</url-pattern>
 *  </filter-mapping>
 * -------------------------------------------------
 * filterName 對應web.xml 中filter-name
 * value      對應web.xml 中 url-pattern
 * servletNames 是指定那個servlet的name
 */
@WebFilter(filterName="UTFFilter",value="/*",servletNames={"Test"})
public class UTFFilter implements  Filter{

	@Override
	public void destroy() {
		System.out.println("======銷燬======");
	}
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, 
			FilterChain chain) throws IOException, ServletException {
		// 設置編碼方式
		req.setCharacterEncoding("UTF-8");
		chain.doFilter(req, res);
	}
	@Override
	public void init(FilterConfig config) throws ServletException {
		System.out.println("======初始化=====");
	}
}

登錄成後的頁面 dom

login.jspjsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	歡迎 ${username}
</body>
</html>

強制登錄ide

package com.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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


@WebFilter("/*")
public class LoginFilter implements Filter{
	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse res, 
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpSession session = request.getSession();
		
		// 獲取登錄用戶名
		String username = (String)session.getAttribute("username");
		// 獲取請求的uri
		String uri = request.getRequestURI();
		System.out.println("username:"+username+"==========");
		if(username != null){
			chain.doFilter(request, res);
		}else if(uri.contains("/login")){
			chain.doFilter(request, res);
		}else{
			System.out.println("===else====");
			request.getRequestDispatcher("/index.jsp").forward(req, res);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		
	}
	
}

這裏須要把上面servlet中的Login 修改下 session做用域post

// 設置做用域
req.getSession().setAttribute("username", username); // 加上這句
//req.setAttribute("username", username); 註釋掉

上傳文件

  1. 上傳文件的servlet


  2. package com.action;
    
    import java.io.IOException;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
    
    @WebServlet("/upload")
    @MultipartConfig
    public class Upload extends HttpServlet{
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
    			throws ServletException, IOException {
    		
    		// 獲取文件部件 part
    		Part part = req.getPart("upfile");
    
    		String name = part.getHeader("content-disposition");
    		System.out.println(name);
    		
    		System.out.println("partName:"+part.getName());
    		// 上傳路徑
    		String root = req.getServletContext().getRealPath("/upload");
    		System.out.println("root:"+root);
    		// 後綴名
    		String str = name.substring(name.lastIndexOf("."),name.length()-1);
    		System.out.println("str:"+str);
    		// 重命名
    		String filename = root + "\\"+UUID.randomUUID().toString()+str;
    		
    		part.write(filename);
    	}
    }

    修改login.jsp頁面 ,以下


  3. <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	歡迎 ${username} <br/>
    	<form action="upload" method="post" enctype="multipart/form-data">
    		<input type="file" name="upfile"><br/>
    		<input type="submit" value="上傳">
    	</form>
    </body>
    </html>

    此時上傳就能夠了




寫的不是很詳細,只是粗略的進行了下測試

若是不足,多多指導。

相關文章
相關標籤/搜索