Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 416

Ильдар Шаукатович Хабибуллин

<input type="submit" value="Зарегистрировать">

</pre>

</form>

</body>

</html>

Рис. 26.2. Страница регистрации

Рис. 26.3. Страница подтверждения регистрации

Форма посылает сервлету RegPrepServlet четыре параметра: surname, name, secname и addr по HTTP-методу post. Сервлет должен принять их, обработать и послать клиенту результаты запроса или замечания по регистрации. Код сервлета приведен в листинге 26.5. Страница подтверждения регистрации показана на рис. 26.3.

Листинг 26.5. Сервлет регистрации клиента СДО

package myservlets;

import java.io.*; import java.sql.*;

import java.util.*;import javax.servlet.http.*; import j avax.servlet.annotation.*;

@WebServlet()public class RegPrepServlet extends HttpServlet{

private String driver = "oracle.jdbc.driver.OracleDriver", url = "jdbc:oracle:thin:@homexp:1521:SDO",

user = "sdoadmin", password = "sdoadmin";

private Connection con; private PreparedStatement pst;

@Override

public void init(){

try{

Class.forName(driver); con = DriverManager.getConnection( url, user, password); pst = con.prepareStatement(

"INSERT INTO students (id, name, address) " + "VALUES(reg_seq.NEXTVAL, ?, ?)"); }catch(Exception e){

System.err.println("From init(): " + e);

}

}

@Override

public void doGet(HttpServletRequest req, HttpServletResponse resp){ doPost(req, resp); }

@Override

public void doPost(HttpServletRequest req, HttpServletResponse resp){ try{

req.setCharacterEncoding("Cp1251");

String surname = req.getParameter("surname");

String name = req.getParameter("name");

String secname = req.getParameter("secname");

String addr = req.getParameter("addr");

resp.setContentType("text/html; charset=windows-1251");

PrintWriter pw = resp.getWriter();

if (surname.length() * name.length() * secname.length() * addr.length() == 0){

pw.println("<html><head>");

pw.println("<title>Продолжение регистрации</^^е>"); pw.println("</head><body><h2 align=center>" +

"Дистанционная система обучения СДО<^2>"); pw.println ("^3>Замечание:</h3>" );

pw.println("Заполните, пожалуйста, все поля.<Ьг>");

pw.println("</body></html>");

pw.flush();

pw.close();

return;

}

String fullname = surname.trim() + " " + name.trim() + " " + secname.trim(); pst.setString(1, fullname); pst.setString(2, addr); int count = pst.executeUpdate();

Statement st = con.createStatement();

ResultSet rs = st.executeQuery(

"SELECT id, name FROM students ORDER BY id DESC");

rs.next();

int id = rs.getInt(1); fullname = rs.getString(2);

rs.close();

StringTokenizer sttok = new StringTokenizer(fullname); sttok.nextToken(); name = sttok.nextToken(); secname = sttok.nextToken();

pw.println("<html><head>");

pw.println ("<Ь^1е>Регистрация</title>" );

pw.println("</head><body><h2 align=center>" +

"Дистанционная система обучения СДО<^2>" );

pw.println('^o6po пожаловать, " + name + " " + secname + "!<br>");

pw.println("Bbi зарегистрированы в СДО.<Ьг>"); pw.println("Ваш регистрационный номер " + id + "<br>"); pw.println("Выбeритe учебный курс:<Ьг> ");