A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最简单的Servlet JavaWeb程序  
(本文档由就业部崇老师提供)

其实JSP最基础为JSP+Servlet+JDBC,Struts+hibernate+spring只是让这个最基本的东西更具有方便性与条理性。
基本没有人把代码全部写到一个JSP页面,完全用JSP实现,这是不现实与不安全的事情。
Servlet为JSP页面的大编码处理提供了保障。
要使用Servlet首先要在WebRoot\lib引入一个javax.servlet-api-3.1.0.jar或者自己网上搜索。
一、基本目标
还是一个相当基础但是却相当实用的登陆页面,输入用户名与密码跳转到另一个页面,对用户名与密码进行处理,此处为进行输出
二、基本思想
三、制作过程
1.index.jsp(谁先谁后其实没有先后之分,但整个页面必须全部完成。)
index.jsp就一个相当基本的登陆表单,被注释的代码使用了JavaScript也就是传说中的js实现了,一打开这个页面就使用ger方法跳转到Register.Java中处理,
[html]<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  

  • <%  
  •     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 'index.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>  
  •         <!--这段代码可以自动进行跳转,实现get方法传递  
  •         <script type="text/javascript">  
  •         window.location.href = "registera?username=sa&password=123"  
  •         </script>  
  •         -->  
  •         <form action="registera" method="post">  
  •             用户名:  
  •             <input type="text" name="username" />  
  •             <br />  
  •             密码:  
  •             <input type="password" name="password" />  
  •             <br />  
  •             <input type="submit" value="登陆" />  
  •         </form>  
  •     </body>  
  • </html>  
其中form action的值、window.location.href的值中关于registera部分与web.xml设置有关。
2.web.xml
基本代码如下,
[html] <?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>  
    <servlet>  
        <!-- servlet名称,与servlet-mapping中的servlet-name必须一致 -->  
        <servlet-name>register</servlet-name>  
        <!--Servlet类的位置-->  
        <servlet-class>com.action.Register</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <!-- servlet名称,与上面中的servlet-name必须一致 -->  
        <servlet-name>register</servlet-name>  
        <!-- servlet过滤的路径,也就是你在jsp中访问servlet时应该在action中填写的东西 -->  
        <url-pattern>/registera</url-pattern>  
    </servlet-mapping>  
</web-app>
web.xml的基本思想如图:
其中不能够因为<servlet-mapping>是<servlet>的映射就改写成如下的错误代码,省点事:
------------web.xml的错误示范开始-------------
[html]<?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>  
  •     <servlet>  
  •         <servlet-name>register</servlet-name>  
  •         <servlet-class>com.action.Register</servlet-class>  
  •         <url-pattern>/registera</url-pattern>  
  •     </servlet>  
  • </web-app>  
------------web.xml的错误示范结束-------------
这样在实现的执行中行不通。整个程序无法正常运行。
3.Register.java
[java]package com.action;  
  •   
  • import java.io.IOException;  
  • //为了Servlet能够传值回前台的Jsp要使用request.getRequestDispatcher("").forward();方法,此方法要求必须处理IO异常  
  • import javax.servlet.*;  
  • import javax.servlet.http.*;  
  • //要使用Servlet必须引入这个两个包  
  •   
  • public class Register extends HttpServlet {  
  •     protected void doGet(HttpServletRequest request,  
  •             HttpServletResponse response) throws ServletException {  
  •         //固定部分,说明收到Get传过来的值,怎么处理,即使你的页面不用到Get去传值,最好也留个空方法在此  
  •         String username = request.getParameter("username");  
  •         String password = request.getParameter("password");  
  •         //接收index.jsp传过来的值,下Post同  
  •         request.setAttribute("username", username);  
  •         request.setAttribute("password", password);  
  •         //打包,准备把值传到WEB-INF/ok.jsp中,下Post同  
  •         try {  
  •             request.getRequestDispatcher("WEB-INF/ok.jsp").forward(request,  
  •                     response);  
  •         } catch (IOException e) {  
  •             e.printStackTrace();  
  •         }  
  •         //指明传输方向,下Post同  
  •     }  
  •   
  •     protected void doPost(HttpServletRequest request,  
  •             HttpServletResponse response) throws ServletException {  
  •         //固定部分,说明收到Post传过来的值,怎么处理  
  •         String username = request.getParameter("username");  
  •         String password = request.getParameter("password");  
  •         request.setAttribute("username", username);  
  •         request.setAttribute("password", password);  
  •         try {  
  •             request.getRequestDispatcher("WEB-INF/ok.jsp").forward(request,  
  •                     response);  
  •         } catch (IOException e) {  
  •             e.printStackTrace();  
  •         }  
  •     }  
  • }  

注释部分已经很清楚,不再赘述
4.WEB-INF/ok.jsp
代码如下,只是在<body>标签中写入一段很简单的输出代码
[html]<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  

  • <%  
  • 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 'ok.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)request.getAttribute("username");  
  •     String password=(String)request.getAttribute("password");  
  •    %>   
  •    You have inputed username:<%=username %>,password:<%=password%>  
  •      </body>  
  • </html>  
其中,把ok.jsp放到WEB-INF里面是因为不能给恶意用户,通过直接输入地址栏的方法,未经登陆就能访问到此页。
前台JSP用request.getAttribute()方法接收后台Servlet送过来的值。
至此,整个JSP+Servlet开发完毕,如果再使用JDBC查询数据库也相当简单,只需要在Servlet中加入相应的JDBC操作数据库代码就可以。
相关文章在叙述。

1 个回复

倒序浏览
简单的学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马