1,这个是struts 配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
/login.jsp
/register.jsp
/register.jsp
/message
liuYanList
/login.jsp
<!-- 这个action 成功后 是把数据库里面的留言抓去 放到这个成功页面 -->
liuYanList
<!-- 失败还是返回这个页面 用异步提示 发送失败 所以选用json 所以这个包应该继承的是json-default -->
<!-- 指定json字符串 根对象是谁 这个需要根据自己写的类来设计 -->
errorMap
/WEB-INF/pages/message.jsp
<!-- 因为我们只是生成一个校验码 所以 不用写方法 只需要excute就可以 -->
<!-- 因为我们用的是流传输 验证码 所以 result 的类型应该是stream -->
inputStream
checkResult
2, 这个是登录
private static final long serialVersionUID = 7270980727777540053L;
private Member member;
private String rePassword;
private String verifyCode;//通过属性驱动来收集页面的验证码
//保存收集到页面的数据 通过service来保存 所以就要注入一个service
private MemberService memberService;
public String login() {
//根据一个指定的username 从数据库中 获取一个Member 对象
Member m = memberService.getMember(member.getUsername());
if (m != null) {
//因为数据库里面保存的是我们加过密之后的密码 所以我们要对用户登录时输入的密码也进行加密
//这样才能比较 两个密码
String inputPassword = StringUtil.md532(member.getPassword());
if (m.getPassword().equals(inputPassword) ){
//信息完全正确 就需要把用户的信息存入session中 这样就不需要重复登录
//通过 Struts2 来访问 HttpSession 把member 的信息存放到session中
//m 是来自数据库的 有主键 id
ActionContext.getContext().getSession().put("member", m);
return "success";
}else {
//密码错误
}
}else {
//输入的用户名不存在
}
return "fail";
}
这个是登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
用户登录页面
<!-- 引入 CSS 文件-->
<!-- 引入JavaScript 库 -->
<br> jQuery(function () {</p> <pre><code> jQuery("#refresh").click(function(){ jQuery("#verify_code").attr("src","${pageContext.request.contextPath }/verify/code?suibian" + new Date()) }); jQuery("#verify_code_input").blur(function(){ //获得输入框的值 和 服务器里面的验证码进行对比 var input = jQuery("#verify_code_input").val(); //发送到服务器端 和 服务器里面的验证码进行对比 var url = "${pageContext.request.contextPath }/verify/check"; var settings={ "url":url, "type":"POST", "data":{"inputCode" : input}, "dataType":"json", "success":function( responseData ){ jQuery("#verify_code_error").html( responseData ); } }; jQuery.ajax(settings); }); }); </script> </head> <body topMargin="10"> <center> <div id="append_parent"></div> <table cellSpacing="6" cellPadding="2" width="100%" border="0"> <tbody> <tr> <td> <table class="guide" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr> <td> <a href='index.jsp'>主页</a>&nbsp;/&nbsp; <a href='#'>留言板(malastruts)</a>&nbsp;/&nbsp;用户登录 </td> </tr> </tbody> </table> <h4 align="center">${ msg }</h4> <!--<form id="settings" action="register_action.jsp" method="post"> --> <form id="settings" action="${pageContext.request.contextPath}/member/login" method="post"> <table class="tableborder" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr class="header"> <td colSpan="3"> 登录系统 </td> </tr> </tbody> <tbody> <tr> <td class="altbg1" width="20%"> <b>用户名称 </b> </td> <td class="altbg2" valign="middle" width="20%"> <input type="text" name="username" value="${member.username}" /> </td> <td> <span style="color: red"> <s:fielderror fieldName="username"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>用户密码 </b> </td> <td class="altbg2"> <input type="password" name="password"/> </td> <td> <span style="color: red"> <s:fielderror fieldName="password"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>验证码 </b> </td> <td class="altbg2"> <input type="text" name="verifyCode" id="verify_code_input" /> </td> <td> <!-- 我们用jquery 给这个验证码绑定一个点击事件 实现异步的验证码刷新 --> <img src="${pageContext.request.contextPath}/verify/code" id="verify_code"> <a href="javascript: " id="refresh">输入正确</a> <span style="color: red" id="verify_code_error"> <s:fielderror fieldName="verifyCode"></s:fielderror> </span> </td> </tr> </tbody> </table> <br /> <center> <input class="button" type="reset" value="重置" name="settingsubmit" /> <input class="button" type="submit" value="提交" name="settingsubmit" /> </center> </form> </td> </tr> </tbody> </table> <hr> </center> </body> </code></pre> <p></html></p> <p>3,Spring 配置<br> <bean id="memberAction" <br> class="message.action.MemberAction" <br> p:memberService-ref="memberService"<br> scope="singleton"/><br> <bean id="messageAction" <br> class="message.action.MessageAction" <br> p:messageService-ref="messageService"<br> scope="singleton"/><br> <bean id="verifyCodeAction" <br> class="message.action.VerifyCodeAction"<br> scope="singleton"/></p> <pre><code>4,这个是Member 类 public class Member implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; private Integer id; //维护 Member 到 Message 一对多的关系 private Set<Message> messages;//当前会员留言 private Set<Reply> replies;//当前会员回复 public Set<Reply> getReplies() { return replies; } public void setReplies(Set<Reply> replies) { this.replies = replies; } public Set<Message> getMessages() { return messages; } public void setMessages(Set<Message> messages) { this.messages = messages; } 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 Integer getId() { return id; } public void setId(Integer id) { this.id = id; } </code></pre> <p>}</p> <p>启动时没有出现任何异常 就是登录的时候 会出现这个异常<br> type Exception report</p> <p>message Invalid action class configuration that references an unknown class named [memberAction]</p> <p>description The server encountered an internal error that prevented it from fulfilling this request.</p> <p>exception</p> <p>java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [memberAction]</p> <p>root cause</p> <p>java.lang.ClassNotFoundException: memberAction</p>