版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32285991/article/details/70550669
刚刚接触Java web 开发,写了一个登录界面,谈谈自己做的时候的一些 感受和具体步骤。
写一个登录的功能首先得有一个页面吧
0.配置环境,因为我是用的myeclipse 我全部是通过myeclipse - Project Facets --一次性导入了Struts,spring 和hibernate。自动生成了
所以后面就不说怎么导的了。
1. 写jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<body>
<form action= "loginAction" method = "post">
请您输入账号 : <input name = "username" type = "text"><br>
请您输入密码 : <input name = "password" type = "password"><br>
<input type = "submit" value = "登录" >
</form>
</body>
</html>
这个页面有一个<form action=" ">
action 相当于是这个表单的内容要提交给谁
可以先不写
2.编写loginAction
package action;
import service.LoginService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username;
private String password;
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 execute() {
if(username.equals("admin") && password.equals("123456")) {
return "success";
} else {
return "error";
}
}
//Geter and Seter
}
这里可以把先前写的jsp页面的action填上去。
3.配置Struts<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<constant name="struts.i18n.encoding" value="GBK"/>
<package name="default" namespace="/"
extends="struts-default">
<action name="loginAction" class="action.LoginAction">
<result name="success">/loginSuccess.jsp</result>
<result name="error">/loginFail.jsp</result>
</action>
</package>
</struts>
这里是在loginAction 返回的是SUCCESS则跳转到loginSuccess.jsp页面,错误同理。jsp页面怎么写就不详细介绍了
4.整合Spring
先写一个LoginService接口
package service;
public interface LoginService {
public boolean login(String username,String password);
}
LoginServiceImpl去实现LoginService中的方法。
package service.impl;
import service.LoginService;
public class LoginServiceImpl implements LoginService {
public boolean login(String username, String password) {
if(username.equals("admin") && password.equals("123456")) {
return true;
}
else {
return false;
}
}
}
5.修改LoginAction
package action;
import service.LoginService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username;
private String password;
private LoginService loginService;
public LoginService getLoginService() {
return loginService;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
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 execute() {
if(loginService.login(username, password)){
// if(username.equals("admin") && password.equals("123456")) {
return "success";
} else {
return "error";
}
}
//Geter and Seter
}
6.修改applicationContext.xml 把loginServiceImpl注入给Action
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx">
<bean id="loginAction" class="action.LoginAction">
<property name="loginService">
<ref bean="loginService"/>
</property>
</bean>
</beans>
7.整合hibernate
连接数据库
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/demo1</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
</session-factory>
</hibernate-configuration>
8.添加实体及映射文件
package entity;
public class User {
private String username;
private String password;
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;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entity.User" table="userlist">
<id name="username" column = "username">
<generator class="uuid"/>
</id>
<property name="password" column = "password" />
</class>
</hibernate-mapping>
映射文件和实体类放在同一个包下,映射文件就新建一个xml文件,把名字改成 实体名.hbm.xml就行。
然后再在hibernate.cfg.xml中添加映射 <mapping resource="entity/User.hbm.xml"/>(添加在 <session-factory> 里)
9.添加Dao层 LoginDao 接口
package dao;
public interface LoginDao {
public boolean login(String username, String password) ;
}
LoginDaoImpl实现
package dao.impl;
import hibernate.HibernateSessionFactory;
import java.util.List;
import org.hibernate.*;
import dao.LoginDao;
public class LoginDaoImpl implements LoginDao {
public boolean login(String username, String password) {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from User where username='"+username+"' and password='"+password+"'");
List list = query.list();
if(list.size() > 0) { return true; }
else { return false; }
}
}
10.修改LoginServiceImpl
package service.impl;
import service.LoginService;
import dao.LoginDao;
public class LoginServiceImpl implements LoginService {
private LoginDao loginDao;
public LoginDao getLoginDao() {
return loginDao;
}
public void setLoginDao(LoginDao loginDao) {
this.loginDao = loginDao;
}
public boolean login(String username, String password) {
return loginDao.login(username, password);
}
}
11.修改applicationContext.xml,将loginDaoImpl 注入loginServiceImpl
<bean id="loginDao" class="dao.impl.LoginDaoImpl"/>
<bean id="loginService" class="service.impl.LoginServiceImpl">
<property name="loginDao"><ref bean="loginDao"/></property>
</bean>
<bean id="loginAction" class="action.LoginAction">
<property name="loginService">
<ref bean="loginService"/>
</property>
</bean>
这样用ssh框架实现登录功能的程序就做好啦
这是我第一次写博客,写的不好有不对的地方请多多见谅,欢迎指出更正