Читать «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 учебный курс:<Ьг> ");