Pioneer.HengYu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.servlet技术:

•需求:   访问一个地址,通过java语言返回该地址对应的网页

           请求:  http://服务器的IP地址:tomcat端口号/项目工程名/访问路径  

           响应:   java通过流反回的html代码

Get请求:  doget方法接收请求

                       地址栏改变   通过脚本动作打开的页面    表单get请求

                       理论上最多传递255个字节,  传递中文时易出现乱码

                       速度快  安全性不高

Post请求:   dopost方法接收请求

                       表单post请求

                       理论上传递数据无上限

                       安全性高

编码方式:   utf-8  中文字符集

 

                  Gbk   中文字符集

                  Gb2312  中文字符集

                  ISO8859-1  不支持中文的字符集

使用servlet开发动态网页技术:

               1.创建类继承httpservlet

               2.重写doget或dopost方法

               3.在web.xml中注册自定创建的类(将地址栏访问信息和java类关联)

Xml文件的构成:

                       1.头文件

                       2.约束文件

                       3.功能标记

一个类对应一个访问地址

             <servlet>

                 <servlet-name>自定义名字</servlet-name>

                 <servlet-class>类路径(包名.类名)</servlet-class>

            </servlet>

           <servlet-mapping>

                  <servlet-name>自定义名字</servlet-name>

                  <url-pattern>从根目录开始的相对路径</url-pattern>

            </servlet-mapping>

访问过程:   

             1.地址栏访问 http://localhost:8088/testServlet/s

             2.关联到web.xml中的url-pattern标记 

             3.关联到web.xml中的servlet-class标记

             4.关联到相关的类

             5.根据请求方式执行doget或者dopost方法

客户端发送数据到服务器上方法:

              转发:让页面跳转,服务端跳转,不会将跳转后的路径显示在地址栏上,安全

                                                      request.getRequestDispatcher("index.jsp?a=1&b=2").forward(request, response);

              重定向:让页面跳转,客户端跳转,会将跳转后的路径显示在地址栏上,不安全

                                                        response.sendRedirect("http://localhost:8088/testServlet/index.jsp?a=1&b=2");

 Servlet的生命周期-----受服务器调动支配

                              1.在客户端第一次访问该servlet时,服务器调用了 servlet的构造方法

                              2.再调用init方法初始化该servlet  

                              3.然后调用doget或dopost来实现功能(反复调用)

                              4.当服务器停止工作时,该servlet被销毁  destroy方法

Servlet是接收请求和返回响应功能的java类

Servlet容器能够运行servlet类的容器(服务器tomcat)

 

需求:模拟客户端网页---- 注册用户 

1

 1 User类
 2 
 3 package factory;
 4 
 5 public class User {   //标准的javaBean
 6     
 7     
 8      private   String   id;   //主键自增  
 9      private  String name;
10      private String  psw;
11      
12      
13     public String getId() {
14         return id;
15     }
16     public void setId(String id) {
17         this.id = id;
18     }
19     public String getName() {
20         return name;
21     }
22     public void setName(String name) {
23         this.name = name;
24     }
25     public String getPsw() {
26         return psw;
27     }
28     public void setPsw(String psw) {
29         this.psw = psw;
30     }
31     public User(String name, String psw) {
32     
33         this.name = name;
34         this.psw = psw;
35     }
36     public User() {
37         
38     }
39 
40 }

2

 1 CRUD 接口
 2 
 3 package factory;
 4 
 5 import java.util.List;
 6 
 7 public interface CRUD {    //用户管理
 8     
 9     // 增加
10       public   int     addUser(User   u);
11       
12       //修改
13       public   int       updateUser(String  id);     
14       
15       //删除
16       public    int            deleteUser(String id);
17       
18       //查询
19       public    List    getUser();
20       
21 
22 }

3

 1 UserCRUD实现类
 2 
 3 package factory;
 4 
 5 import java.sql.Connection;
 6 import java.sql.PreparedStatement;
 7 import java.sql.SQLException;
 8 import java.util.List;
 9 
10 public class UserCRUD implements CRUD {
11 
12 
13     public int addUser(User u) {
14         int   x=0;
15         DB   db=new DB();
16         Connection   con=db.getCon();
17         String   sql="insert into  usercrud  values(?,?,?)";
18         try {
19             PreparedStatement   pst=con.prepareStatement(sql);
20             pst.setString(1, "1");
21             pst.setString(2, u.getName());
22             pst.setString(3, u.getPsw());
23             x=pst.executeUpdate();            
24         } catch (SQLException e) {
25             // TODO Auto-generated catch block
26             e.printStackTrace();
27         }finally{
28             
29             db.conClose();
30         }
31           
32         return x;
33     }
34 
35     
36     public int deleteUser(String id) {
37         // TODO Auto-generated method stub
38         return 0;
39     }
40 
41     
42     public List getUser() {
43         // TODO Auto-generated method stub
44         return null;
45     }
46 
47     
48     public int updateUser(String id) {
49         // TODO Auto-generated method stub
50         return 0;
51     }
52 
53 }

4

 1 DB类
 2 
 3 package factory;
 4 
 5 import java.sql.Connection;
 6 import java.sql.DriverManager;
 7 import java.sql.SQLException;
 8 
 9 public class DB {    //负责数据库的连接和关闭
10     
11     Connection   con;
12     //连接
13     
14     public    Connection         getCon(){
15         try {
16             Class.forName("oracle.jdbc.driver.OracleDriver");
17             con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","lihengyu","lihengyu");
18             System.out.println("数据库已连接");  
19             
20         } catch (ClassNotFoundException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         } catch (SQLException e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }finally{
27             
28             return   con;
29         }
30     
31     }
32 
33     //关闭
34     public   void   conClose(){
35         try {
36             con.close();  
37         } catch (SQLException e) {
38             // TODO Auto-generated catch block
39             e.printStackTrace();
40         }
41         
42     }
43 
44 }

5

 1 UserFactory工厂类
 2 
 3 package factory;
 4 
 5 public class UserFactory {
 6     
 7     //生产产品---生产具有产品共性的某个具体产品
 8     public  static  CRUD      getCRUD(){
 9         
10         //CRUD   c1=new UserCRUD();  //向上转型
11         //return   c1;
12         return  new UserCRUD();
13 
14     }
15 
16 }

6

 1 主方法中模拟客户端网页----注册用户
 2 
 3 package factory;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8           //模拟用户在表单中填写用户名和密码
 9           User   user=new User();
10           user.setName("Pioneer.HengYu");
11           user.setPsw("123");
12           
13           //将生成的用户对象存入数据库中
14           UserFactory.getCRUD().addUser(user);  
15           
16           System.out.println("用户注册成功");  
17 
18     }
19 
20 }

7

 1 UserServlet要继承HttpServlet
 2  
 3 package factory;
 4 
 5 import java.io.IOException;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 public class UserServlet extends HttpServlet {
13 
14     // 承上启下: 接收用户名和密码 调用工厂模式
15     public void doPost(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17         // 设置字符集
18         request.setCharacterEncoding("utf-8");
19         response.setContentType("text/html;charset=utf-8");
20         // 接收用户名和密码
21         String name = request.getParameter("name");
22         String psw = request.getParameter("psw");
23         // 将接收的变量封装到对象中
24         User u = new User(name, psw);
25         // 调用工厂
26         int x = UserFactory.getCRUD().addUser(u);
27         // 页面的响应 --跳转到不同页面
28         if (x > 0) {
29             request.getRequestDispatcher("success.html").forward(request,
30                     response);
31         } else {
32             response.sendRedirect("fail.html");
33         }
34     }
35 
36     public void doGet(HttpServletRequest request, HttpServletResponse response)
37             throws ServletException, IOException {
38                 this.doPost(request, response);
39     }
40 }

 

posted on 2017-03-29 17:18  Pioneer.HengYu  阅读(812)  评论(0编辑  收藏  举报