JSP 项目答辩问题 1. 什么是B/S、C/S?
答案: C/S 结构:Client/Server(客户端/服务器),桌面安装应用程序(QQ、斗地主、MSN)。 B/S结构:Browser/Server(浏览器/服务器), Web应用程序(WebQQ、OA、网页游戏)。
2. HTTP常见状态码?
答案: 200 成功
401 客户端没有访问权限 404 路径错误
500 服务器产生内部错误
3. 传值方式get/post?
答案:
客户端向服务器传递数据有两种方式(通过form表单实现):get 和 post
Get: 有长度(数据量小),浏览器地址栏可以看见传递的参数。默认使用get方式传值。 Post:无长度(数据量大),地址栏不可见(相对安全)。
4. Servlet的生命周期?
答案:
1. 实例化(执行构造方法)---> 2. 初始化(执行init()方法)---> 3.服务(根据get或post请求执行相应的doGet()或doPost()方法) ---> 4. 销毁(执行destroy()方法)
5. 页面跳转的两种方式?
答案:
内部跳转和外部跳转。
内部跳转使用:request. getRequestDispatcher (“跳转的路径”).forward(request,response); 外部跳转使用:response.sendRedirect(“跳转的路径”);
注意:两者之间的区别,内部跳转请求在服务器内部完成,相当于一次请求;而外部跳转客户端会发送两次请求;
6. 内部跳转和外部跳转区别?
答案:
内部跳转与外部跳转区别:
1. 内部跳转:浏览器的地址栏不会发生改变。request中的参数值,会被保留到新的页面。 2. 外部跳转:浏览器地址发生改变(相当于二次请求)。第一次request中的参数值,不会
被保留。
7. Post提交如何处理中文?
答案:
request.setCharacterEncoding(\"gbk\"); response.setCharacterEncoding(\"gbk\");
注意:这种中文处理方式只能用来处理post提交 必须写在方法的第一行。
8. Get提交如何处理中文?
答案:
String conver_sex = new String(sex.getBytes(\"iso-8859-1\"),\"gbk\"); 注意:这种方式只能用来处理get提交
9. JSP页面元素的构成?
答案: 静态内容 指令 就是jsp页面中的html标签,css,javascript代码 <%@ 指令名 属性=“值” %> 其中最常用的page指令:page指令主要是用于控制整个jsp页面的信息 声明 <%! 可以定义变量,定义方法 %> 声明:就是将当前的jsp页面,看成一个Java类。 例如: <%! private int a = 10; %> 等同于如下代码: public class Test { } private int a = 10; 表达式 代码块(scriptlet) <%= 输出的变量名 %> //注意:没有分号结束哦 <% //写Java代码 %> 注释 Html 的注释: JSP的注释:<%-- 注释内容 --%> 动作
答案: request response session application 表示客户端的请求 服务器端的响应 存储当前会话的信息(每一个用户一个就是Session对象) 存储所有人的会话信息(类似于:QQ群聊天) 11. Session对象的作用已经常用方法? 答案: Session作用:用于存放、记录每一个客户端的相关信息。 session.setAttribute(\"name\将变量存放在session中 session.getAttribute(\"name\");//获取session中的值 session.invalidate();//session立即被销毁 12. 什么是MVC三层结构? 答案: M表示模型——数据访问层。 C表示控制——业务控制层。 V表示显示——展示层。 13. 项目中如何判断用户是否已经登录? 答案: 登录的时候,将用户的信息存放在session中;然后从Session中获取用户的信息(Session.getAttribute(“名字”));如果返回null表示还没有登录。 14. 请简单介绍一下购物车如何实现? 答案: 每个用户对应一个唯一的session对象,将用户的购物信息通过session保存、读取。 Session中存放的是一个集合(ArrayList),集合中存放用户购买的商品对象(GoodsInfo)。 15. jsp中的作用域有几种?分别是什么?其作用范围有多大? 答:有四种,分别是:page,request,session,application。 作用范围:page:在当前页面中有效,request:能保存一次服务器端跳转内的值,session:一次会话之内有效(可以理解为打开浏览器开始到关闭浏览器之后),application:在整个服务器启动范围之内有效(即:启动服务器开始至关闭服务器)。 16. jsp运行原理? 1)客户端通过jsp页面向服务器断发送一次请求, 2)服务器接受请求后交给jsp解释引擎处理, 3)jsp解释引擎在将处理结果返回给服务器, 4)最后服务器在将客户端的请求结果以html的方式返回给客户端 17. 每一个jsp文件最终都会被转译成什么文件? 答:编译成servlet文件; 18. 为什么jsp文件第一次运行时候比较慢? 答:第一次运行jsp文件的时候,首先要将jsp文件编译成servlet文件,然后在加载执行, 第二次运行jsp文件的时候:1)首先判断jsp文件是否修改,如果没有修改,则直接调用之前生成的servlet文件,如果有修改则先要在编译生成新的servlet文件之后在执行。 19. 如何访问servlet? 答:访问servlet,首先要找到web.xml 配置文件中的 20. 解释servlet中web.xml配置文件 xmlns=\"\" xmlns:xsi=\"\" xsi:schemaLocation=\" \"> 21. servlet的生命周期 答:创建初始化—》服务—》销毁 22. 解释servlet中各个方法在什么时候执行? public void init(ServletConfig config)throws ServletException{ } //初始化方法 public class SimpleServlet extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ } //接收客户端的get请求 } public void doPost(HttpServletRequest request,HttpServletResponse //接收客户端的post请求 } public void destroy(){ //当servlet销毁的时候执行 } response) throws ServletException,IOException{ 23. 如何通过地址向servlet中传递参数? 答:地址重写传递参数 只要在要访问的路径之后加上一个“?”然后接上要传递的参数名称如上所示name,后面赋值即可,如果要传递多个参数则用“&”隔开。 24. 简述什么是MVC设计模式以及优点有哪些? 答:jsp+servlet+javaBean,客户端发送请求,由servlet接收(Control),并且调用相应的dao(Model)进行处理,在将结果返回给响应的jsp页面(view)。 优点:适合团队开发,可维护性很高,分工明确等。 千里之行购物网站答辩问题列表 一、 登入登出部分 1、 请解释登录界面的业务流程及相应代码; 登录页面,当单击登录按钮之后,将表单信息(用户名和密码)提交到Servlet中,Servlet接收表单信息,调用相应的Dao进行登录验证,如果验证成功,则将用户名,用户id,保存在session中,然后跳转到后台首页,否则失败。 2、 如果登录失败,如何处理,如何给出提示信息? 如果登录失败,保存失败信息在request范围之内,然后使用服务器端跳转,跳转到登陆页,在登录页将request范围之内的信息取出打印在页面中,给用户提示。 3、 你的后台页面是否可以绕过登录,而通过URL直接访问?如果是,请解决此问题;如果否,请解释你是如何做到的。 不可以,在后台登陆首页,在页面的最上方判断session中是否存在用户名的属性,如果不存在则跳转到登录页,否则说明登录成功。 4、 页面上的登录的用户名和时间是如何显示的?(和第一题有重叠) 从session中取出用户名打印出来即可显示,时间通过javaScrip可以得到当前系统时间。 5、 如何发布公告的?解释业务流程? a) 在发布公告页面,输入完整的信息之后,单击提交按钮之后,将表单信息提交到 Servlet中,Servlet接收表单信息,并且将Session中的当前用户ID取得,在取得当前系统时间,在调用相关的dao类,进行处理,如果添加成功,跳转到成功页,否则到失败页面。 6、 你的“退出系统”功能是如何完成的? 销毁session中所有的信息,使用invalidate()方法。然后跳转到登陆页面。 二、 系统用户管理部分: 1、 请解释用户密码修改的业务流程及相应代码; 2、 请解释用户名修改的业务流程及相应代码; 三、 公告管理部分 1、 请解释公告管理中的增,删、改、查中的某个业务流程及相应代码; 2、 在新增公告时,公告发布者的信息应如何获取和操作,说明你的方法; 添加公告时,可以将之前保存在Session中的用户id取得,然后插入到公告信息表中的相应字段。 3、 解释分页的思想以及相关代码 前台部分: 1、 解释购物车功能如何实现以及解释相关代码。 注意: 项目代码的解释一定要清楚,例如:找到客户注册的代码, 并且解释每行的含义等。 15.删除一条记录用什么方法?怎样实现用户登录的验证是怎样的。 利用传递主键的方法,也就是delete from 表名 where 主键=”传递过来的主键的值”. 利用select * from 用户信息表 where 用户名=”” and 密码=””,如果有数据则登陆成功 技术问题: 1.我们正常写完一个JAVA文件都需要自动编译一下,这是为什么? 因为我们运行程序的时候用到的不是java程序而是class程序. tomcat读的是java文件还是什么?是class文件 不是java程序 java链接sqlserver的代码是什么? try { conn = DriverManager .getConnection(\"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookTable;user=sa;password=sa\"); stmt = conn.createStatement(1004, 1007); rs = stmt.executeQuery(sql); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return rs; 2.链接sqlserver的一般端口是什么?1433 还有其他的端口么?tomcat的8080端口 3.在java项目开发当作,你一般是怎么调试程序的?sqlserver数据库的还原以及备份? 利用debug调试程序. 4.如果我要给页面加过滤器控制乱码,我应该怎么做? 近来在调试Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考: 1.Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了: <%@ page contentType=\"text/html; charset=gb2312\"%> 2.Jsp页面采用表单提交时,提交的数据中含有中文,这时我们获取表单数据后,展示到其它页面时也会出现乱码,解决方案是在提交处理的Servlet里接收数据时,先加上如下一行代码: request.setCharacterEncoding(\"gb2312\"); 这是其中的一种作法,当页面较少时还好,如果页面较多,我每添加新的页面就要加上这句话,所以可以采用过滤器来解决,具体解决步骤如下: 首先写一个过滤器类,代码如下: package demo; 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; public class SetCharacterEncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException { request.setCharacterEncoding(\"gbk\"); // 传递控制到下一个过滤器 chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } } 然后在web.xml文件中添加如下代码: 这样所有的请求都将交由这个过滤器处理下,这样无论我们添加多少个页面都可以放心了,不用总考虑要加那么一句代码了. 3.在存取数据库时发生乱码现象,这种现象比较郁闷,处理起来相对复杂一点. 首先要在数据存入数据库时,进行如下编码的转换:如我们要把含有中文的字符串存入数据库,首先: String s=request.getParameter(\"author\"); String author=new String(s.getBytes(\"ISO8859_1\"),\"gb2312\"); 在从数据库取出展示到页面时,也要经过如下转换: String s=rs.getString(\"author\"); String author=new String(s.getBytes(\"GB2312\"),\"ISO8859_1\"); 以上是我总结的对三种Jsp文件中文乱码的处理方法,希望对大家有所帮助. 5.在数据库定义字段的时候,可以选择char还有varchar,你一般选择什么,为什么? 选择varchar,因为varchar是可变长的字符型,而char是定长的 5.为什么要用struts自身带的text框,它与HTML的有什么区别? 在jsp中 怎么导入现有的数据库,它的备份为**.bak 还原数据库或者附加数据 6.在中文编程中,你使用的服务器是TOMCAT,如果出现乱码,你是怎么解决的? 方法一:更改页面字符集 方法二:在tomcat的server.xml中更改字符集 JAVA连接sqlserver需要哪些jar包? mssqlserver.jar 7.如果我要实现上传图片,然后再另一个页面显示,我应该怎么做? 应该把上传的图片输出到服务器下面的某一个文件夹,这样可以保证本机图片删除以后任何页面都可以访问并且显示. 安装sqlserver时,经常会出现安装问题,例如会出现说“某某文件被挂起, 安装运行程序之前请重新启动计算机”,你是否也遇见过这样的问题? 遇到过,只要把暴风影音或者网络电视卸载就可以解决. 8.如果我要从配置文件中读取中文汉字,显示到JSP页面上? 如果出现乱码我应该怎么处理? str.getBytes(\"iso8859_1\"), \"gb2312\"); 怎么去更改sqlserver的字符集? 可以用下面语句改变数据库的字符集。 ALTER DATABASE yourdb COLLATE 新字符集 改变sql server的默认字符集,要重建master 9.在获取一个从数据库查询回来的数组,你一般是怎么知道它里面存储了多少数据? 利用数组.size()方法就可以知道其数目是多少. 你在开发中用过JAVASCRIPT么,你为什么要用这个,它与JAVA有什么关系? 用到了, JAVASCRIPT可以减轻服务器的访问频率,从而提高服务器的运行速度.达到了前台校验的效果. 它和java没有任何关系,属于一种脚本语言. 10.java中如果出现EXCEPTION的话,你应该怎么做,你在这次开发中用到了 么?java连接mysql需要哪些JAR包? 第一种方法是throws DAOException(异常) 第二种方法是捕获异常----try catch()方法 11.数据库选用Mysql,SQLSERVER?为什么?如何倒入数据库?JAVA连接sqlserver需要哪些jar包? 选择SQL SERVER,安全性高,性能好. 如何倒入数据库? 右键数据库-然后附加数据库即可. JAVA连接sqlserver需要哪些jar包? mssqlserver.jar 12.简单的说一下B/S结构体系的优点? B/S结构:(Browser/Server,浏览器/服务器模式):是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。 客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。 B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易。 B/S结构的使用越来越多,特别是由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担;并增加了交互性,能进行局部实时刷新。 一、B/S结构的优点 B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。 二、B/S架构软件的优势与劣势 (1)维护和升级方式简单。目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维 护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级的方式是“瘦”客户机,“胖”服务器。 (2)成本降低,选择更多。大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。 现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使的最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。 比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。 (3)应用服务器运行数据负荷较重。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。 12.MVC模式分为哪三个组件,工作的核心? Struts应用中包含3种组件:控制器组件(C)、模型组件(M)、和视图组件(V)。 控制器:ActionServlet(核心控制器)、自定义Action(代表一个用户操作)。 模型组件:定义和实现业务逻辑的接口和类。 视图组件:jsp页面、ActionForm和Struts标签。 ActionServet是Struts最核心的组件。在Web容器启动的时候,ActionServlet被初始化,加载struts-config.xml配置文件(这就是为什么当struts配置文件修改后要重启web容器)。 Struts处理请求的详细过程: 1)客户端浏览器发送请求到ActionServlet,ActionServlet根据请求的路径和struts-config.xml的配置信息找到对应的Action Bean 和 Form Bean 。如发送请求到服器, ActionServlet就会根据struts配置信息找path属性为“/register”的Action Bean,于是找到RegisterAction,并得知RegisterAction的name属性为\"memberForm\于是找到MemberForm的实例(如果不存在则创建)。 2)在确定将要调用的Action Bean 和 对应的Form Bean后,就将请求中的值填充到Form Bean 中(Action可以不关联任何ActionForm,这一步是可选的)。在调用Action的execute方法之前,ActionServlet还要准备好ActionMapping 参 数,ActionMapping中包含了该Action的配置信息。 3)然后struts将请求分发至相应的 Action Bean 处理,ActionMapping参数,ActionForm参数,request 和 response都作为参数传给处理请求的Action Bena 的 execute 方法。 4)Action 调用业务逻辑方法,得到返回值,并返回ActionForward对象。 5)控制权重新回到 ActionServlet ,ActionServlet 很据 Action 返回的 ActionForward 对象转发到相应的jsp 6)处理结果返回给浏览器。。 注意的地方: 1) ActionServlet 将控制权转到页面的时候采用的是 转发 的方式 ( request.getRequestDispatcher(url).forward(request,response); ),所以转发到页面的request 和 Action 方法参数中的 request 是同一个请求,数据可以通过 request 对象的 attribute 属性传递。 2)当需要重定向的方式转到新的页面的时候,可以再 Action 代码中使用 ( response.sendRedirect(url); ) ,并返回 null 。 3)ActionForm 很据对应 Action 的 scope 属性配置不同而生命周期有所不同。一般,scope 属性设为 request, 则每次请求开始时 ActionServlet 创建新的 ActionForm 对象,保存在 request 对象的 attribute 属性中。所以可以在 Action 代码中设置 ActionForm 的值 ,在页面中取出。 13.静态页面和动态页面的区别? 静态页面页面不能动态显示数据,也就是说和数据库没有关系,只是信息写死在页面,无法实现实时更新的效果. 动态页面是随着数据库的变化而变化,从而达到了数据的实时性. 14.如何实现的页面间的跳转? 简略回答就是通过forward进行跳转. 详细解答就需要从页面请求开始一直到响应页面,就是通常说的找代码.Struts的跳转是通过.do请求,然后根据请求在struts里面找到响应的请求,根据请求就可以看到下面的forward转向页面是哪一个,通常有成功页面和错误页面,只要看 标 示 就 可 以 , 例 如 path=\"/index/indexInfo.jsp\" contextRelative=\"true\"/>;而jsp页面则可以直接转向,form表单上面直接写明了请求的jsp页面. 15.如何设置背景颜色,字体大小? 以上两种是对整个页面进行设置,如果对于td和tr来讲也是同理,运用background和bgcolor即可. 16.设置文本框的代码? 17.打开数据库,找到某某表,如果我更改某个数据,某个表里的哪个值会改变? 从开始菜单--所有程序-Microsoft SQL server-企业管理器-找到数据库那一层---找到自己的数据库-双击表--了解自己数据库中有几张表,各个字段都代表什么意思. 18.购物篮是不是用SESSION做的? 答案:是用session做的.购物车主要是通过session进行操作,和数据库没有关系. 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务