该模块是”和谐交通“中一小部分,虽然功能简单,但完成了SSH(Struts2+Spring+Spring)的整合,相当于SSH的”Hello World!”吧.
前台由JSON完成,使用AJAX的好处就不说了. 后台为Struts2框架
PS: 该模块在NetBeans下完成,以前习惯用MyEclipse,这次用NetBeans还真是不习惯,但实际项目要求用NetBeans,因为Myeclipse是商业软件,可能引来不必要的争端.
Sigh~~以前还感觉用盗版是理所当然的.
1.建立项目 首先建立以个webApp的java web项目 把必要的包都引入
2.前台JSP+JS
JSP页面核心代码,其它省略.
<form id=“form1″ method=“post” action=“#” >
<label id=“name” for=“inputtext1″>Name:</label>
<input id=“inputtext1″ type=“text” name=“inputtext1″ value=“” />
<label id=“password” for=“inputtext2″>Password:</label>
<input id=“inputtext2″ type=“password” name=“inputtext2″ value=“” />
<input id=“inputsubmit1″ type=“submit” name=“inputsubmit1″ value=“Sign In” />
</form>
JS文件为
$(“#form1″).submit(function()
{
login();
return false;
})
});
function login()
{
var url = “loginAction”;
var login_name = $(“#inputtext1″).val(); //get user’s name
var login_password = $(“#inputtext2″).val(); //get user’s password
var json_user = {
inputtext1 : login_name,
inputtext2 : login_password
}; //JSON object
if (login_name == “”)
{
$(“#login_confirm”).text(“\u8bf7\u8f93\u5165\u767b\u5f55\u540d”);
$(“#inputtext1″).focus();
return false;
}
if(login_password == “”)
{
$(“#login_confirm”).text(“\u8bf7\u8f93\u5165\u767b\u5f55\u5bc6\u7801″);
$(“#inputtext2″).focus();
return false;
}
//submit after handing in the form
$.post( url ,json_user , callback , “json” );
return false;
function callback(json){
var json_object = eval(‘(‘ + json.result + ‘)’);
var suc = json_object.suc;
var msg = json_object.msg;
alert(msg);
if(suc==0 ){
$(“#inputtext1″).val(“”);
$(“#inputtext2″).val(“”);
}
if(suc== 1){
$(“#name”).html(“<p>\u60a8\u5df2\u6210\u529f\u767b\u9646<\u548c\u8c10\u4ea4\u901a>\u4e3b\u9875</p>” + $(“#inputtext1″).val() );
$(“#inputtext1″).hide();
$(“#password”).html(“<p> \u6b22\u8fce\u60a8 \uff01</p>”);
$(“#inputtext2″).hide();
$(“#inputsubmit1″).val(“Back”);
}
}
}
Model包 info.yilee.person.model
Action层 info.yilee.action
Service层 info.yilee.person.service 及其实现层info.yilee.person.service.impl
Dao层的包为 info.yilee.person.dao及其实现层info.yilee.person.dao.impl
4,编写java文件
1 Person.java
import java.sql.Timestamp;
/**
*
* @author yilee
*/
public class Person {
private int id;
private String personRelationId;
private String personName;
private Timestamp birthday;
private boolean sex;
private String email;
private String mobile;
private Timestamp createDate;
private Timestamp modifyDate;
private String enableStatus;
private String username;
/**
* 省略getter和setter, 必须加上!
*/
}
2 LoginAction.java
import com.opensymphony.xwork2.ActionSupport;
import info.yilee.person.model.Person;
import info.yilee.person.service.PersonService;
import org.apache.log4j.Logger;
/**
*
* @author yilee
*/
public class LoginAction extends ActionSupport {
private static Logger log = Logger.getLogger(LoginAction.class);
static {
log.debug(“login action active”);
}
private String result; //JSON字符串,JS与Action传递数据的载体
public void setPersonService(PersonService personService) {
this.personService = personService;
}
private String inputtext1;
private String inputtext2;
private PersonService personService;
public void setInputtext1(String inputtext1) {
this.inputtext1 = inputtext1;
}
public void setInputtext2(String inputtext2) {
this.inputtext2 = inputtext2;
}
public String getResult() {
return result;
}
@Override
public String execute() throws Exception {
log.debug(“loginAction execute begin”);
String loginName = inputtext1;
log.debug(“user name is “ + inputtext1);
String password = inputtext2;
log.debug(“password is “ + inputtext2);
Person person = personService.getPersonByUsername(loginName); //查询是否有用户名存在
if (person == null) {
log.debug(“user is not found!………..”);
result = “{suc:0, msg:’用户名不存在’}”; //构造JSON格式的字符串
} else if (!password.equals(person.getPassword())) {
log.debug(“user is found ! but password is wrong………..”);
result = “{suc:0, msg:’密码不正确!’}”;
} else {
log.debug(“user is login successful!……………..”);
result = “{suc:1, msg:’登录成功!’}”;
}
log.debug(“loginAction execute end”);
return SUCCESS;
}
}
3 PersonService.java
import info.yilee.person.model.Person;
/**
*
* @author yilee
*/
public interface PersonService {
public Person getPersonByUsername(String username);
}
import com.opensymphony.xwork2.ActionSupport;
import info.yilee.person.model.Person;
import info.yilee.person.service.PersonService;
import org.apache.log4j.Logger;
/**
*
* @author yilee
*/
public class LoginAction extends ActionSupport {
private static Logger log = Logger.getLogger(LoginAction.class);
static {
log.debug(“login action active”);
}
private String result; //JSON字符串,JS与Action传递数据的载体
public void setPersonService(PersonService personService) {
this.personService = personService;
}
private String inputtext1;
private String inputtext2;
private PersonService personService;
public void setInputtext1(String inputtext1) {
this.inputtext1 = inputtext1;
}
public void setInputtext2(String inputtext2) {
this.inputtext2 = inputtext2;
}
public String getResult() {
return result;
}
@Override
public String execute() throws Exception {
log.debug(“loginAction execute begin”);
String loginName = inputtext1;
log.debug(“user name is “ + inputtext1);
String password = inputtext2;
log.debug(“password is “ + inputtext2);
Person person = personService.getPersonByUsername(loginName); //查询是否有用户名存在
if (person == null) {
log.debug(“user is not found!………..”);
result = “{suc:0, msg:’用户名不存在’}”; //构造JSON格式的字符串
} else if (!password.equals(person.getPassword())) {
log.debug(“user is found ! but password is wrong………..”);
result = “{suc:0, msg:’密码不正确!’}”;
} else {
log.debug(“user is login successful!……………..”);
result = “{suc:1, msg:’登录成功!’}”;
}
log.debug(“loginAction execute end”);
return SUCCESS;
}
}
import info.yilee.person.model.Person;
/**
*
* @author yilee
*/
public interface PersonDao {
/**
*根据username查找用户
*/
Person get(String username);
}
import info.yilee.person.dao.PersonDao;
import info.yilee.person.model.Person;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
*
* @author yilee
*/
public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {
private static Logger log = Logger.getLogger(PersonDaoImpl.class);
private HibernateTemplate ht;
public Person get(String username) {
ht = getHibernateTemplate();
log.debug(“begin to hql”);
List ul = getHibernateTemplate().find(“from Person p where p.username = ?”, username);
log.debug(“dao is working and user name is “ + username);
if (ul.size() == 0) {
return null;
} else {
return (Person) ul.get(0);
}
}
}
1 struts.xml
因为整合了JSON,所以和一般的struts.xml稍有不同
<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
<struts>
<package name=“person” extends=“json-default”>
<action name=“loginAction” class=“loginAction”>
<result type=“json”/>
</action>
</package>
</struts>
2 applicationContext.xml
整合Spring
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “/WEB-INF/dtd/spring-beans.dtd”>
<beans default-lazy-init=“true”>
<bean id=“personDao” class=“edu.bjtu.person.dao.impl.PersonDaoImpl”>
<property name=“sessionFactory” ref=“sessionFactory”></property>
</bean>
<bean id=“personService” class=“edu.bjtu.person.service.impl.PersonServiceImpl”>
<property name=“personDao”>
<ref local=“personDao”/>
</property>
</bean>
<bean id=“loginAction” class=“edu.bjtu.person.action.LoginAction” lazy-init=“false”>
<property name=“personService”>
<ref local=“personService”/>
</property>
</bean>
</beans>
3 person.hbm.xml
整合Hibernate
<!DOCTYPE hibernate-mapping
PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
<hibernate-mapping package=“edu.bjtu.person.model”>
<class name=“Person” table=“person”>
<id name=“id” type=“int” column=“person_id”>
<generator class=“increment”/>
</id>
<property name=“username” column=“person_username” type=“string”
not-null=“true” length=“50″/>
<property name=“password” column=“person_password” type=“string”
not-null=“true” length=“50″/>
</class>
</hibernate-mapping>
Pingback: SSH(STRUTS2+SPRING+HIBERNATE)实现文件上传功能 | 异泪的博客
Pingback: Java生成MD5算法 | 异泪的博客
Pingback: "入侵"学院服务器 | 异泪的博客