页面不跳转 点击提交页面没有变化

页面不跳转 点击提交页面没有变化

RegistServlet.java


package servlet;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.imooc.domain.User;

import utils.UploadUtils;

/**
 * 用户注册的Servlet
 */
@WebServlet("/RegistServlet")
public class RegistServlet extends HttpServlet {
	

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//数据的接收
		//文件上传基本操作

		try {
			//定义一个Map集合用于保存接收到的数据
			Map<String,String>map=new HashMap<String,String>();
			//1 创建一个磁盘文件项工厂对象
			DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
			//2 创建一个核心解析类
			ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);
			//3 解析request请求 返回的是List集合 List集合中存放的是FileItem对象
			List<FileItem> list=servletFileUpload.parseRequest(request);
			//4 遍历集合 获得每个FileItem 判断表单项还是文件上传项
			//定义一个List集合 用于保存复选框兴趣爱好数据
			List<String> hobbyList=new ArrayList<String>();
			String url=null;//图片
			for(FileItem fileItem:list) {
				//判断是表单项还是文件上传项
				if(fileItem.isFormField()){
					//普通表单项
					//接收表单项参数的值
					String name=fileItem.getFieldName();//获得表单的name属性
					String value=fileItem.getString("UTF-8");//获得表单的值
					System.out.println(name+"        "+value);
					//接收复选框的数据
					if("hobby".equals(name)) {
						     String hobbyValue=fileItem.getString("UTF-8");
						     //接收到一个值 将这个值存入到hobbyList集合中
						     hobbyList.add(hobbyValue);
						     //改变原有的tostring()输出结果        原输出字符串[xxx,yyy]    现输出字符串xxx,yyy
						     hobbyValue=hobbyList.toString().substring(1, hobbyList.toString().length()-1);
						     System.out.println(name+"          "+hobbyValue);
						     
						     //将爱好的数据存入Map集合当中
						     map.put(name,hobbyValue);
					}else {
						      //将数据存入到map集合当中
						       map.put(name, value);
					}
				}else {
					//文件上传项
					//文件上传功能
					
					//获得文件上传的名称:
					String fileName=fileItem.getName();
					//获得文件上传的路径
					String path=this.getServletContext().getRealPath("/upload");
					//通过工具类获得唯一文件名
					String uuidFileName=UploadUtils.getUUIDFileName(fileName);
					//获得上传的数据
                    InputStream is=fileItem.getInputStream();
                    //将输入流对接到输出流
                     url=path+"\\"+uuidFileName;
                    OutputStream os=new FileOutputStream(url);
                    /**
                     *   /*
      这里的is是图片的输入流,InputStream is=fileItem.getInputStream();这条语句很重要,
      注意是fileItem.getInputStream(),fileItem是上传图片的那个控件,所以这里的输入流
      就是获取图片的输入流
      那么,下面的while循环就是读写数据常用的循环了,将数据从is输入流中读取出来,放到
      byte数组b中,len为实际读取的字节数,前几次循环数据比较多,会存放b,所以len就是
      1024,最后一次可能读不满,所以len就是最后一次实际读取的字节数。
      每次循环,读完一次就把数据写到输出流os中。
      */
                     
                    int len=0;
                    byte[] b=new byte[1024];
                    while((len=is.read(b))!=-1) {
                    	os.write(b, 0, len);
                    }
					is.close();
					os.close();
				}	
				
			}
			System.out.println("map:"+map);
			//封装数据到User当中
			User user=new User();
			user.setUsername(map.get("username"));
			user.setPassword(map.get("password"));
			user.setSex(map.get("sex"));
			user.setNickname(map.get("nickname"));
			user.setHobby(map.get("hobby"));
			user.setPath(url);
			//将注册用户的信息存入到List集合中
			//获得ServletContext对象
			List <User>userList=(List<User>) this.getServletContext().getAttribute("list");
			userList.add(user);
			for(User u:userList) {
				System.out.println(u);
			}
			this.getServletContext().setAttribute("list", userList);
			//注册成功,跳转到登陆页面
			request.getSession().setAttribute("username",user.getUsername());
			response.sendRedirect(request.getContextPath()+"/login.jsp");
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}




InitServlet.java




package servlet;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

import com.imooc.domain.User;

/**
 * 用户注册的初始化的Servlet
 */
/* @WebServlet(value="/InitServlet",loadOnStartup=1) */
public class InitServlet extends HttpServlet {
	@Override
	public void init() throws ServletException {
		// 创建一个List集合保存用户注册的信息
		List<User> list=new ArrayList<User>();
		//将list保存到ServletContext作用域中
		this.getServletContext().setAttribute("list",list);
	}
}





UploadUtils.java



package utils;

import java.util.UUID;

public class UploadUtils {

	
	
	/**
	 * 生成唯一文件名
	 * @param args
	 */
	public static String getUUIDFileName(String fileName) {
		//将文件名的部分进行截取 :xx.jpg     -->      .jpg
		int idx=fileName.lastIndexOf(".");//找到 .的位置
		System.out.println("idx的位置:"+idx);
		String extention=fileName.substring(idx);  //取出 .jpg
		System.out.println("取出文件后缀:"+extention);
		 //随意生成多位编号与之前的格式结合 把编号中的-替换成无字符串     xxxxx.jpg
		String uuidFileName=UUID.randomUUID().toString().replace("-", "")+extention;
		
		return uuidFileName;
	}
	
	
	
	public static void main(String[] args) {
	System.out.println(getUUIDFileName("1.jpg"));

	}

}





login.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<link rel="stylesheet" href="./css/login.css">
</head>
<body>
    <div class="login">
        <div class="header">
            <h1>
                <a href="./login.jsp">登录</a> <a href="./regist.jsp">注册</a>
            </h1>

        </div>
        <%
        String username="";
        if(session.getAttribute("username")!=null){
        	username=(String)session.getAttribute("username");
        }
        %>
        
        <form action="" method="post">
            <table>
                <tr>
                    <td class="td1">用户名</td>
                    <td><input type="text" class="input1" name="username" value="<%=username%>"></td>
                </tr>
                <tr>
                <td class="td1">密码</td>
                <td><input type="password" class="input1" name="password"></td>
                </tr>
                <tr>
                <td class="td1" colspan="2">
                    <input type="checkbox" name="remember" value="true" checked="checked"> 记住用户名</td>
                </tr>
                <tr>
                    <td colspan="2">
                        <div class="btn-red">
                            <input type="submit" value="登录" id="login-btn">
                        </div>
                    </td>
                </tr>
            </table>

        </form>
    </div>
</body>
</html>



regist.jsp





<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
<link rel="stylesheet" href="./css/reg.css">
</head>
<body>
	<div class="reg">
		<div class="header">
			<h1>
				<a href="./login.jsp">登录</a> <a href="./regist.jsp">注册</a>
			</h1>
		</div>
		<!-- 
			文件上传的条件
			* 表单必须是post提交方式
			* 表单中必须有文件上传项,文件上传项必须有name属性和值
			* 表单的enctype属性必须设置为multipart/form-data
		 -->
		<%
			String msg = "";
			if(request.getAttribute("msg")!=null){
				msg = (String)request.getAttribute("msg");
			}
		%>
		<h3><font color="red"><%= msg %></font></h3>
		<form action="/reg_login/RegistServlet" method="post" enctype="multipart/form-data">
			<table>
				<tr>
					<td class="td1">用户名</td>
					<td><input type="text" class="input1" name="username"></td>
				</tr>
				<tr>
					<td class="td1">密码</td>
					<td><input type="password" class="input1" name="password"></td>
				</tr>
				<tr>
					<td class="td1">昵称</td>
					<td><input type="text" class="input1" name="nickname"></td>
				</tr>
				<tr>
					<td class="td1">性别</td>
					<td>
						<input type="radio" name="sex" value="male">男
						<input type="radio" name="sex" value="female">女
					</td>
				</tr>
				<tr>
					<td class="td1">上传头像</td>
					<td><input type="file" id="photo" name="upload"></td>
				</tr>
				<tr>
					<td class="td1">兴趣爱好</td>
					<td><label> 
						<input type="checkbox" name="hobby" value="篮球">篮球
						<input type="checkbox" name="hobby" value="足球">足球
						<input type="checkbox" name="hobby" value="排球">排球 
						<input type="checkbox" name="hobby" value="羽毛球">羽毛球
					</label></td>
				</tr>
				<tr>
					<td colspan="2">
						<div class="btn-red">
							<input type="submit" value="注册" id="reg-btn">
						</div>
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

http://img1.sycdn.imooc.com//climg/5c4c14d7000167c311320435.jpg

http://img1.sycdn.imooc.com//climg/5c4c14f40001dff302140568.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学使用的什么浏览器,换个浏览器再试试呢。或者下载老师的源码试一下。祝:学习愉快~

提问者 你不是最丑的 2019-01-27 15:26:08

少写了   return ;

持续学习 2019-01-26 18:27:51

login.jsp页面

<form action="" method="post">

没有设置action值

  • 提问者 你不是最丑的 #1
    不是从login.jsp跳转到别的页面 是从regist.jsp的表单 到RegistServlet.java 然后提交信息跳转到login.jsp 问题是提交了信息无法跳转login.jsp
    2019-01-27 14:03:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师