页面不跳转 点击提交页面没有变化
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>
0
收起
正在回答
3回答
同学使用的什么浏览器,换个浏览器再试试呢。或者下载老师的源码试一下。祝:学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星