MVC框架——基于java web简单开发(作业)
我的JSP作业要求:
练习要求如下:
1.按照*.bmp做好客户端login.jsp文件
2.在客户端login.jsp文件中用javascript实现登陆验证,要求非空字符,非空对象等验证。
3.在服务器端口checkLogin.jsp文件中进行分类执行
1)学生用户:用户名为:本人姓名,密码为:本人学号,登陆成功后用response跳转到student.jsp页,输出个人信息。提醒:1.session应用;2.注意中文乱码处理。
2)管理员用户:用户名为:admin,密码为:admin,登陆成功后用jsp:forward跳转到student.jsp页,输出目前有多少人登陆服务器页面。提醒:application应用。
3)来宾账户:用户名为:guest,密码为:guest,登陆成功后输出“我来逛一圈,马上走!”。用超级链接跳转到客户端页。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。
哎呀,这些对我这个新手只能百度吧。
闲话少说了,下面开始手把手记录一下如何搭建MVC框架,作为例子,展示的是一个最(超级)简单的登录流程。
- 第一步:创建项目
创建项目的工具我推荐MyEclipse,毕竟MyEclipse可以加载强大的插件,缺点就是吃资源->创建项目完毕之后,我们可以立刻启动项目。
启动项目完毕之后,MyEclipse自带的浏览器会向我们展示这么一个简单到不能再简单的页面
看到项目的文件结构,不难在WebRoot文件夹下找到名为index.jsp这一文件。浏览器所展示的页面,就是此文件经过处理过后的结果。
点开之后,修改<body></body>之间的内容,例如改成This is My MVC project.。重新启动项目后,告诉我你看到了什么。
好了,解决完页面来源问题之后,接下来就是解答为什么会展示这么一个页面的问题了。我们点WebRoot文件夹节点,再点击WEB-INF文件夹节点,找到web.xml文件并且双击打开,然后看看里面的内容
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> |
看到第7行的代码中的index.jsp,是不是觉得似曾相识呢?没错,它就是我们刚才一直在讨论的那个页面。这里设置的就是项目启动后浏览器展示的第一个页面,以后我们可以试着再WebRoot目录下添加一个HTML文件或JSP文件,然后将这里的index.jsp改成所添加的文件名,重新启动项目,你就会发现哪里就改成你的默认首页页面。web.xml文件,用处还不止一点,因为我自己也不怎么懂!哈哈哈
前面已经创建完项目了,那么下面一个步骤就是逐一新建在MVC框架中负责V(视图)、C(控制器)、M(模型)的对应文件。
- 第二步:新建负责V(视图)的JSP文件
在文件夹Web-Root下新建名为login.jsp的JSP文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="404.jsp"%> <% 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%>"> <title>统一身份认证平台</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link href="login.css" type="text/css" rel="stylesheet"> <script type="text/javascript"> function checkLoginForm() { var username = document.getElementById("username"); var password = document.getElementById("password"); if(username.value == "" || password.value == "") { alert("用户名或密码不能为空"); return false; } } function toUpperCase(obj) { obj.value = obj.value.toLowerCase(); } function resetLogin(){ var username = document.getElementById("username"); var password = document.getElementById("password"); if(username.value!=null || username.value!="") { username.value=""; } if(password.value!=null || password.value!="") { password.value=""; } } </script> </head> <body> <div id="pagebody"> <div id="loginbox"> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tbody> <tr> <td><img src="imgs/login-top.gif" width="262" height="34"></td> </tr> <tr> <td> <form id="fm1" name="fm1" action="MyServlet/checkLogin" method="post" onsubmit="return checkLoginForm()"> <div class="box" id="login"> <table border="0" cellspacing="0" cellpadding="0" width="92%" align="center"> <tbody> <tr> <td colspan="2"> </td> </tr> <tr> <td align="right">用户名:</td> <td> <input id="username" name="username" class="username" type="text" placeholder="请输入你的账号" size="25" onkeyup="toUpperCase(this)" /> </td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td align="right">密 码:</td> <td> <input id="password" name="password" class="password" type="password" placeholder="请输入你的密码" size="25" onkeyup="toUpperCase(this)" /> </td> </tr> <tr> <td colspan="2"> <table border="0" cellspacing="6" cellpadding="5" width="100%"> <tbody> <tr> <td align="right"><input alt="[按钮]" src="imgs/login-buttom.gif" type="image" name="imageField" /></td> <td> <a href="login.jsp"><img border="0" src="imgs/login-button2.gif" width="93" height="30" onclick="resetLogin()"></a> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="25" valign="bottom" colspan="2" align="left" style="padding-left:30px;"><a target="_blank" href="LoginFailed.jsp"> <font color="#ff0000"><strong>疑难问题解答</strong></font> </a> <a target="_blank" href="LoginFailed.jsp">忘记密码?</a> <br> <a target="_blank" href="LoginFailed.jsp">关于身份认证</a> </td> </tr> <tr> <td colspan="2"><!-- <div align="center"><img border="0" src="imgs/line.gif" width="227" height="2"></div>*/--> <div class="box-1"></div> </td> </tr> <tr> <td colspan="2" class="xx"><img border="0" src="imgs/quan.gif" width="18" height="15">河源职业技术学院信息中心</td> </tr> </tbody> </table> </div> </form> </td> </tr> <tr> <td><img src="imgs/login-foot.gif" width="262" height="10"></td> </tr> </tbody> </table> </div> <div id="info"> <ul> <li>这是校园的内部门户站点。您可以登录校园信息服务综合平台,通过同一个账户名/密码。 <font color="#ff0000">学生帐号为学号,初始密码为身份证号后六位或888888;教工帐号为新六位工号,初始密码为身份证号后六位。如果您的身份证号最后一位是字母,请尝试用大写的字母登录(具体情况以人事档案中大小写为准)。 </font> 访问校园网的各种网络应用系统和信息资源。 </li> <li>统一身份认证是当用户进入信息门户系统时对用户的统一认证,教职工和学生只用一个帐号,登录一次门户,就可以进入所有有权限访问的应用系统,不必重复登录。 </li> <li>如有问题请联系:3800078</li> <li>网络报障电话:3800202</li> </ul> </div> </div> </body> </html> |
提交的表单,action为"MyServlet/checkLogin",发出请求是post,具体请看代码
下面是login.css代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
@charset "utf-8"; body { font:12px Tahoma; margin:0px; background:#eaeaea; } a:link,a:visited { font-size:12px; text-decoration:none; color:#000; } .xx{ font-size:12px; padding-left: 10px; } a:hover{ color: #3399cc; text-decoration: underline; } .en{ font-family:Verdana; font-size:10px; } a.yellowlink:link,a.yellowlink:visited,.yellow { color: #ff6600; } a.yellowlink:hover{ color: #3399cc; text-decoration: underline; } .username,.password{ width:176px; font-size:14px; height:20px; line-height: 20px; } .input{ border: 1px solid #cccccc; height: 18px; padding: 3px 2px 0px 2px; font: 12px Verdana; } #pagebody { width:1024px; height: 550px; margin:0px auto; background: url(imgs/bg.jpg) top no-repeat; background-color: #fff; } #loginbox { position: relative; overflow:hidden; float:left; clear:left; top:265px; left: 60px; width:262px; background: url(../imgs/login-bg.gif) repeat-y; border:10px solid #f0ffff; } .box-1{ border:1px solid #f0ffff; padding-top: 10px; } #info { position: relative; right:80px; top: 245px; width:560px; float:right; overflow:hidden; padding-top:28px; clear:right; } #info ul { margin: 5px 5px 10px 20px; list-style:url(../imgs/icon.gif) disc; } #info ul li{ font:14px/22px sans-serif; padding: 2px; list-style-image:url(../imgs/star.png); } #Footer { margin:0px auto; display: block; width: 1024px; height:80px; background: #ffffff url(../imgs/footer.jpg) repeat-x; background-color: #fff; color: #666; } #footer tr td { background:#FFFFFF; } |
这个文件的文件名login.jsp。(建议初学者做完这个步骤之后先运行一遍项目,看看效果如何,再看看有没有出错的地方)
如果运行的效果如下图,那应该就没什么问题了。
所谓的V(视图),通俗地来讲,就是用户所看到的内容。具体到这个Java web项目,就是用户所看到的页面。
- 第三步:新建负责C(控制器)的Servlet
首先,要在src目录下新建一个包,包名为MyServlet然后,再在该包下新建一个servlet文件,名为checkLogin,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
package MyServlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import Uers.user; public class checkLogin extends HttpServlet { public checkLogin(){ super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean s=false; boolean a=false; boolean g=false; request.setCharacterEncoding("utf-8"); user user = new user(); String username=request.getParameter("username"); String password=request.getParameter("password"); s=user.student(username, password);//使用模型对账号和密码进行验证,返回一个boolean类型的对象 a=user.admin(username, password); g=user.guest(username, password); if(s){ //如果验证结果为真,跳转至登录成功页面 response.sendRedirect("../student.jsp"); HttpSession session = request.getSession(); session.setAttribute("username",request.getParameter("username")); session.setAttribute("password",request.getParameter("password")); }else if(a){ //如果验证结果为真,跳转至登录成功页面 response.sendRedirect("../admin.jsp"); HttpSession session = request.getSession(); session.setAttribute("username",request.getParameter("username")); }else if(g){ //如果验证结果为真,跳转至登录成功页面 response.sendRedirect("../guest.jsp"); }else{ // response.sendRedirect("../LoginFailed.jsp"); response.sendRedirect("../404.jsp"); } } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } } |
控制器(C)的作用,就是对流程的控制,接收视图传来的参数,交由模型进行处理,再根据处理的结果决定下一步的操作。具体到本项目,servlet接收jsp传来的参数username和password,交由user处理,根据返回的boolean结果跳转到登录成功(失败)的页面。
- 第四步:修改web.xml文件,注册servlet并且建立action与servlet之间的映射。
前面说到,MyServlet.checkLogin会处理提交的请求,那么,为什么checkLogin会接收到这个请求呢?因为,我事先修改了web.xml文件,在里面添加了相应的代码。web.xml的完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>login</servlet-name> <servlet-class>MyServlet.login</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>checkLogin</servlet-name> <servlet-class>MyServlet.checkLogin</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/MyServlet/login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>checkLogin</servlet-name> <url-pattern>/MyServlet/checkLogin</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app> |
看到关于action的那一行XML代码,是否想到了什么呢?没错,就是jsp表单中所定义的action。试着修改,看看会有什么效果?
- 第五步:新建M(模型)的user文件
首先,在src文件下新建包,包名为Uers。然后在该包下新建class文件,名为user。
为了让读者,尤其是初学者更快地理解MVC,而不是将精力耗费在理解user以及数据库操作上面,我将user进行了尽可能的简化。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package Uers; public class user { public boolean student(String username,String password){ if(username.equals("郭良俊")&&password.equals("2015122297")){//判断用户名以及密码是否与设定相符 return true; }else { return false; } } public boolean admin(String username,String password){ if(username.equals("admin")&&password.equals("admin")){//判断用户名以及密码是否与设定相符 return true; }else { return false; } } public boolean guest(String username,String password){ if(username.equals("guest")&&password.equals("guest")){//判断用户名以及密码是否与设定相符 return true; }else { return false; } } } |
- 第六步:新建V(视图)中的另外几个JSP文件
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="404.jsp"%> <% 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%>"> <title>My JSP 'admin.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <!-- JSP声明 --> <%! int i; %> <!-- 将i值自加后放入application的变量内 --> <%application.setAttribute("counter",String.valueOf(++i));%> <%--String username = (String)session.getAttribute("username"); --%> <%-- <%=session.getAttribute("username") %>欢迎回来!</p>--%> <p>利用EL表达式:${sessionScope.username}欢迎回来!</p> <p>目前有<%=application.getAttribute("counter") %>人登陆服务器</p> <jsp:forward page="student.jsp" /> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="404.jsp"%> <% 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%>"> <title>My JSP 'guest.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h2>我来逛一圈,马上走!</h2> <a href="login.jsp">点击回到首页</a> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="404.jsp"%> <% 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%>"> <title>My JSP 'LoginFailed.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h2>登录失败!请确认账号密码</h2> <p>学生用户:用户名为:本人姓名,密码为:本人学号</p> <p>管理员用户:用户名为:admin,密码为:admin</p> <p>来宾账户:用户名为:guest,密码为:guest</p> <a href="login.jsp">点击回到首页</a> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="404.jsp"%> <% 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%>"> <title>My JSP 'student.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% String username =(String)session.getAttribute("username"); String password =(String)session.getAttribute("password"); %> <%-- 下面是stundent的任务--%> <p>我叫:<%=username %></p> <p>我的学号:<%=password %></p> <%-- 下面是admin的任务--%> <%=session.getAttribute("username") %>欢迎回来!</p> <p>利用EL表达式:${sessionScope.username}欢迎回来!</p> <p>目前有<%=application.getAttribute("counter") %>人登陆服务器</p> <p>利用EL表达式:目前有${applicationScope.counter} 人登陆服务器</p> <a href="login.jsp">首页</a> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%> <% 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%>"> <title>这不是404页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link href="css/style.css" type="text/css" rel="stylesheet"> <script type="text/javascript"> var num=30; function redirect(){ num--; document.getElementById("num").innerHTML=num; if(num<0){ document.getElementById("num").innerHTML=0; //location.href="http://199604.com"; document.location="login.jsp"; } } setInterval("redirect()", 1000); </script> </head> <body> <div class="whole"> <img src="imgs/back.jpg" /> <div class="mask"></div> </div> <div class="b"> <p> 登录失败!<br /> 如有疑问请咨询管理员<br /> I<br /> v<br /> 我一直问我自己我以后能做什么。<br /> 事实上我根本不需要,我只需要静静等待着。<br /> 因为,生活,一半是回忆、一半时继续。<br /> <span id="num"></span>秒后自动跳转到主页 </p> <a class="new" href="http://199604.com">Go to 记忆角落</a> <a class="old" href="login.jsp">首页</a> </div> </body> </html> |
- 第七步:跑项目,看效果
(1)输入账号:admin,密码:admin 将会跳转到页面如下:
(2)输入错误的账号或错误的密码,将会跳转到页面如下:
其他的功能你可以去尝试!
下面是整个MVC的代码还有素材
这是小菜鸟半小时的作品,就是一些效果那些老师没有要求所以我就简单的接收数据就OK了。这个MVC是无数据库版的,嗯尽情的喷我挑转页面没有CSS和HTML且都很垃圾!其实我真的挺垃圾的!好了我现在就洗洗睡了!晚安了我的基友们!
棒棒哒?( ‘ω’ )?
装作看得懂的样子来评论下
又长又臭-
@大雄 雄哥对不起,我又写了一些辣鸡-
@郭良俊只狗 不过深的我心-
@大雄 我已经在努力的不让自己颓废- 但是还是没有方向感去学!
@郭良俊只狗 那跟我一起搬砖吧?
@大雄 福利如何,一个月多少钱、多少天假期、多少个月转正、买五险一金吗?
@郭良俊只狗 么有钱的,当做是锻炼身体。