定义一个简单的JAVABEAN;
我是用exlipse编写的,这里没有导包的功能,只能把内容列这里了,用到的技术有:servlete,hibernate
mysql,用HTML编写的映射文档;
package model;
public class User {
private int id;
private String username;
private String password;
private String realName;
private String sex;
private String school;
private String address;
private String email;
private String phone;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
//建立User类到数据库的映射
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="model">
<class name="User" table="user">
<id name="id">
<generator class="identity" />
</id>
<property name="username" length="10" not-null="true" unique="true"/>
<property name="password" length="10" not-null="true" />
<property name="realName" not-null="true" />
<property name="sex" not-null="true" />
<property name="school" />
<property name="address" />
<property name="email" />
<property name="phone" />
</class>
</hibernate-mapping>
//用监听器实现hibernate的配置
package control;
import java.io.File;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionFactoryListener implements ServletContextListener {
public static final String SESSION_FACTORY_KEY = "hibernate_session_factory";
public static final String CONFIG_FILE_KEY = "configuration-file";
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext sc = event.getServletContext();
String filename = sc.getInitParameter(CONFIG_FILE_KEY);
SessionFactory sf = null;
if (filename == null) {
Configuration config = new Configuration().configure();
sf = config.buildSessionFactory();
} else {
Configuration config = new Configuration().configure(new File(sc.getRealPath(filename)));
sf = config.buildSessionFactory();
}
if (sf != null) {
sc.setAttribute(SESSION_FACTORY_KEY, sf);
}
}
@Override
public void contextDestroyed(ServletContextEvent event) {
ServletContext sc = event.getServletContext();
SessionFactory sf = (SessionFactory) sc.getAttribute(SESSION_FACTORY_KEY);
if (sf != null)
sf.close();
}
}
//如下代码实现了接收请求以及做出的部分回应,写得有点乱,功能没有独立开,不过不想改了;
package control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import view.SuccessView;
import model.User;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = -154176561953216931L;
private static final String USERNAME_PARAMETER = "username";
private static final String PASSWORD_PARAMETER = "password";
private static final String SEX_PARAMETER="sex";
private static final String REALNAME_PARAMETER="realName";
private static final String SCHOOL_PARAMETER="school";
private static final String ADDRESS_PARAMETER="address";
private static final String EMAIL_PARAMETER="email";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);
Session session = null;
try {
session = sf.openSession();
User user=new User();
String username=new String(req.getParameter(USERNAME_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");
user.setUsername(username);
user.setPassword(req.getParameter(PASSWORD_PARAMETER));
String sex=new String(req.getParameter(SEX_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");
user.setSex(sex);
String realName=new String(req.getParameter(REALNAME_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");
user.setRealName(realName);
String school=new String(req.getParameter(SCHOOL_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");
user.setSchool(school);
String address=new String(req.getParameter(ADDRESS_PARAMETER).getBytes("ISO-8859-1"),"UTF-8");
user.setAddress(address);
user.setEmail(req.getParameter(EMAIL_PARAMETER));
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
if (user.getUsername().trim().length()!=0)
new LoginServlet().outputSucceed(resp, user);
else
new LoginServlet().outputFailed(resp);
} catch (Exception e) {
e.printStackTrace();
outputError(resp);
} finally {
session.close();
}
}
private void outputSucceed(HttpServletResponse resp, User user) throws Exception {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("<fieldset>");
pw.println("<legend>用户信息</legend>");
pw.println("<label>您好:</label>" + user.getUsername() + "<br/>");
pw.println("恭喜您注册成功!");
pw.println("</fieldset>");
pw.println("</body>");
pw.println("</html>");
new SuccessView().loginSucceed(resp);
}
public void outputFailed(HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("无效的用户名或密码!");
pw.println("<hr/>");
pw.println("<a href=/"index.html/">返回首页</a>");
pw.println("</body>");
pw.println("</html>");
}
private void outputError(HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("用户名重复,请重新输入!");
pw.println("<hr/>");
pw.println("<a href=/"index.html/">返回首页</a>");
pw.println("</body>");
pw.println("</html>");
}
}
//查询代码,我写得有点复杂,肯定有简单的方式,大家多想想;
package control;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.User;
import org.hibernate.* ;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import view.SuccessView;
public class Select extends HttpServlet {
private static final String USERNAME_PARAMETER="username";
User user;
ArrayList<String> list1=null;
ArrayList<String> list2=null;
ArrayList<String> list3=null;
ArrayList<String> list4=null;
ArrayList<String> list5=null;
ArrayList<String> list6=null;
ArrayList<String> list7=null;
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);
Session session = null;
try{
session=sf.openSession();
user=new User();
Query query1=session.createQuery("select username from User where username=?");
query1.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list1=(ArrayList<String>)query1.list();
user.setUsername(list1.get(0));
Query query2=session.createQuery("select realName from User where username=?");
query2.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list2=(ArrayList<String>)query2.list();
user.setRealName(list2.get(0));
Query query3=session.createQuery("select sex from User where username=?");
query3.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list3=(ArrayList<String>)query3.list();
user.setSex(list3.get(0));
Query query4=session.createQuery("select school from User where username=?");
query4.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list4=(ArrayList<String>)query4.list();
user.setSchool(list4.get(0));
Query query5=session.createQuery("select address from User where username=?");
query5.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list5=(ArrayList<String>)query5.list();
user.setAddress(list5.get(0));
Query query6=session.createQuery("select email from User where username=?");
query6.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list6=(ArrayList<String>)query6.list();
user.setEmail(list6.get(0));
Query query7=session.createQuery("select phone from User where username=?");
query7.setParameter(0, req.getParameter(USERNAME_PARAMETER ));
list7=(ArrayList<String>)query7.list();
user.setPhone(list7.get(0));
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw=resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("您所查询的"+user.getRealName()+"个人信息:"+"<br/>");
pw.println("用户名:"+user.getUsername()+"<br/>");
pw.println("真实姓名:"+user.getRealName()+"<br/>");
pw.println("性别:"+user.getSex()+"<br/>");
pw.println("学校:"+user.getSchool()+"<br/>");
pw.println("家庭住址:"+user.getAddress()+"<br/>");
pw.println("邮箱:"+user.getEmail()+"<br/>");
pw.println("联系电话:"+user.getPhone()+"<br/>");
pw.println("</body>");
pw.println("<html>");
}catch(Exception e){
new Select().faild(resp);
}
}
private void faild(HttpServletResponse resp) throws IOException{
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw=resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("您查询的信息不存在!");
pw.println("<a href=/"suceess.do/">返回</a>");
pw.println("</body>");
pw.println("</html>");
}
}
//只是个登录界面,比较简单,本来我想做个MVC结构的,可是那要好好的组织代码,花得时间太长,只好放弃
package view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.User;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import control.LoginServlet;
import control.SessionFactoryListener;
public class SuccessView extends HttpServlet {
private static final String USERNAME_PARAMETER="username";
private static final String PASSWORD_PARAMETER="password";
public static final String USER_ENTITY="user";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
SessionFactory sf = (SessionFactory) this.getServletContext().getAttribute(SessionFactoryListener.SESSION_FACTORY_KEY);
Session session = null;
String username=(String)req.getParameter(USERNAME_PARAMETER);
String password=(String)req.getParameter(PASSWORD_PARAMETER);
try{
if(username.trim().length()!=0){
session=sf.openSession();
Query query = session.createQuery("from User where username= ? and password = ?");
query.setParameter(0, username);
query.setParameter(1, password);
// req.setAttribute("username",USERNAME_PARAMETER );
User user=(User)query.uniqueResult();
HttpSession hs=req.getSession();
hs.getAttribute(USER_ENTITY);
if(query.uniqueResult() != null){
loginSucceed(resp);
}else{
new LoginServlet().outputFailed(resp);
}
}else{
new LoginServlet().outputFailed(resp);
}
}catch(Exception e){
new LoginServlet().outputFailed(resp);
}finally{
}
}
public void loginSucceed(HttpServletResponse resp)throws IOException{
resp.setContentType("text/html; charset=UTF-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("<label>您好:</label>" +"欢迎来到网络通讯录!"+ "<br/>");
pw.println("<hr/>");
pw.println("<a href=/"index.html/">返回首页</a>");
pw.println("<form method=/"post/" action=/"select/"");
pw.println("<table>");
pw.println("<tr>");
pw.println("<td>");
pw.println("<input type=/"submit/" name=/"select/" value=/"查询/">");
pw.println("</td>");
pw.println("<td>");
pw.println("<input name=/"username/" type=/"text/" maxlength=/"10/">");
pw.println("</td>");
pw.println("</tr>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}
}
还有HTML做的界面,在下面的文章里将给大家列出来.