首先来说一下我们jsp的课程:第一部分为Servlet技术,包括Servelt入门,会话跟踪,JavaMal和Servlet.第二部分就是Jsp 技术,包括:jsp简介,jsp脚本和指令的使用,jsp隐式对象,JavaBean与jsp中的标准动作,jsp表达式语言,自定义标签,jsp自定义表签库.第三部分就是过滤器的设计模式,包括过滤器和MVC设计模式. 一.Servlet知识及常见错误和规律. 1.桌面运行程序与WEB应用程序在过程实质是一样的---基于请求与响应的过程. 2.http协议(超文本传输协议) 1).无状态:多次请求信息之间无联系. 2).用于internet发送请求和响应消息 3).使用端口接收和发送消息,默认为80端口. 端口:为内存缓冲区(多线程接收数据) windows: 0---65535端口 0---4096为系统端口 3.什么是Servlet? Server let服务器端小程序. 用来处理客户端发送的请求,并由服务器响应给客户端的java编写的程序. Servlet只在服务器运行 4.Servlet详解: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); response.sendRedirect("Login.jsp"); //重定向方法 request.getParameter(""); //读取客户端数据 / /以下方法为转发,不同于重定向的是:转发时数据不丢失. ServletContext context=this.getServletContext(); RequestDispatcher dispatcher=context.getRequestDispatcher("/welcome.jsp"); dispatcher.forward(request,response); ...//以下方法为包含(用得相对较少) dispatcher.include(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); } } (2).当需要向Servlet传递参数的时候,Src="Servlet?name=' ' "; 5.执行servlet时,发生下载提示: (1).可能性一:text/html;charset=GBK中间分号写成逗号. (2).可能性二:XML中配置信息出错. (3).可能性三:如定义全局变量时,例:CONTENT_TYPED在以后所用中放在双引号之中. (4).可能性四:当上面的text/html,charset中写错字符的时候,也会提示下载. 6执行servlet时,发生404错误: (1).多为xml中配置出错. (2).可能在servlet通信方法中url出错. (3).表单提交时:action路径. (4).比较弱智的错误就是标记写错,请仔细检查. 7.执行servlet时,发生403错误: (1).tomcat下站点里发生错误. 8.执行servlet时,发生405错误: (1).servlet中没有post提交方法时. 95.执行servlet时,发生500错误: (1).多数为servlet程序代码中发生异常错误. 10.执行时,取出的数据为null.就要根据实际情况对应错误提示去找. 11.执行jsp页时,发生500错误提示.... 多数为jsp页面在转译过程中发生编译错误! 甚是严重错误,可以按提示回头去找... 二.XML配置 <!--config中的配置信息,当中配置需要在servlet中的xml中--> <servlet> <init-param> <param-name>sess</param-name> <param-class>com.serv<param-class> </init-param> <servlet-name>Myservlet</servlet-name> <servlet-class>com.Myservetl</servlet-class> </servlet> <!--此为对Myservlet进行映射--> <servlet-mapping> <servlet-name>Myservlet</servlet-name> <servlet-class>/url</servlet-class> <servlet-mapping> <!--context中配置信息--> <context-param> <param-name>ses</param-name> <param-class>com.ser</param-class> </context-param> 注意:配置信息只能读取,并且config是在单个Servlet中能访问,context是全局访问 三. ========================会话跟踪技术总结======================== 用户授权. 隐藏表单域 URL重写 Cookie使用 -------------------------------------------------------------------------------------------- 1.会话:是同一客户端和服务器之间在同一段时间的多次请求和响应. 2.Session使用(重点) HttpSession session=request.getSession(); session.setAttribute("name",Object); //附值 session.getAttribute(); //取值 session.removeAttributer(); 3.Cookie(类) 1).Cookie是什么? cookie是一段字符串,由HTTP支持,在客户端可以永久保存.写入(硬盘). 每次请求,响应中都会为cookie留有空间. 2).用法: Cookie cookie=new Cookie("name",cookie); //必须指定cookie的键与值,且必须为字符串. response.addcookie(cookie); cookie.setMaxAge(3600); //以秒为单位. //读取客户端发送过来的cookie,返回值类型为: cookie数组 request.getCookies(); //循环读取键与值. 使用过程:(1).生成cookie, new cookie("","") (2).设置生存周期 >0,SetMaxAge(秒). (3).发送到客户端:response.addCookie(cookie); 小常识:(1).一个网站最多向一个客户端写20个cookie. (2).一个客户端最多接收300个cookie. 4.Session与Cookie这间的关系: session的ID作为Cookie的值在客户端与服务器之间进行传递. -------------------------------------------------------------------------------------------- 四.构建实体Bean的原则: /* * 1.bean类为公有 * 2.类成员为私有 * 3.必有一个无参构造 * 4.有set()和get()方法 * 5.方法命名为setXxx()或getXxx()方法 */ 五.MVC实现数据封装 此数据封装标准按MVC总结. 所需内容: 1.Servlet 2.JavaBean 3.OperBean(DBconnection) 4.Jsp 由Servlet提取前台数据,然后将数据封装于JavaBean中,再实例化OperBean,调用OperBean中方法, 将JavaBean对象以参数的形式传过去,并进行一系列的操作后,返回数据存入ArrayList中或者其它集合内,并将集合对象封装Session对象中,便于在前台取值. Servlet控制: ........ Arraylist lis=new ArrayList(); String name=request.getParameter("username"); JavaBean bean=new JavaBean(); bean.setName(name); OperBean oper=new OperBean(); lis=oper.operMethod(bean); HttpSession session=request.getSession(); session.setAttribute("list",lis); OperBean逻辑: ... public ArrayList OperMethod(JavaBean bean) { ArrayList lis=new ArrayList(); String usr=bean.getName("name"); String sql="select * from student where name='"+usr+"'"; DBconnection db=new DBconnection(); ...//操作数据业务 return lis; } 前台业务: ... ArrayList list=(ArrayList)session.getAttribute("lis"); Iterator ite=list.iterator(); while(ite.harNext()) //遍历输出 { JavaBean bean=(JavaBean)ite.next(); . //取bean中值 } //由此可以进行"用户登陆","数据的增删改查","注销登陆"等操作.....