struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="my" extends="struts-default" namespace="/" > <action name="LoginAction" class="com.struts.action.LoginAction"> <result name="login">/result.jsp</result> <result name="regist">/result.jsp</result> </action> </package> </struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
login.jsp
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312" %> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>My JSP 'index.jsp' starting page</title> </head> <body> <s:form action="LoginAction" method="post" namespace="/" > <s:label value="登录"></s:label> <s:textfield name="userName" label="请输入用户名"></s:textfield> <s:password name="password" label="请输入密码"></s:password> <s:submit value="登录" align="left" method="login"></s:submit> <s:submit value="注册" align="left" method="regist"></s:submit> </s:form> </body> </html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>提交结果</title> </head> <body> <h1>${result}</h1> </body> </html>
LoginAction.java
package com.struts.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; import com.struts.service.LoginService; @SuppressWarnings("serial") public class LoginAction extends ActionSupport implements ServletRequestAware { // 用户名 private String userName; // 用户密码 private String password; // Service private LoginService service = new LoginService(); // 获得HttpServletRequest对象 private javax.servlet.http.HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { this.request = request; } /** * 登录 * @return */ public String login() throws Exception { // 登录用户check boolean flg = service.userLogin(userName, password); if (flg) { request.setAttribute("result", "成功保存[" + "登录成功" + "]"); return "login"; } request.setAttribute("result", "成功保存[" + "登录失败" + "]"); return "login"; } /** * 注册 * @return */ public String regist() throws Exception { // 用户注册 boolean flg = service.userRegist(userName, password); if (flg) { request.setAttribute("result", "成功保存[" + "注册成功" + "]"); return "regist"; } request.setAttribute("result", "成功保存[" + "注册失败" + "]"); return "regist"; } 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; } }
LoginService.java
package com.struts.service; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class LoginService { Connection con = null; Statement stat = null; ResultSet rs = null; public LoginService() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); stat = con.createStatement(); } catch (Exception e) { con = null; } } /** * 登录用户check * * @param userName * @param passWord */ public boolean userLogin(String userName, String passWord) { String sql = "select * from tb_user where username='" + userName+"' and password ='"+passWord+"'"; try { rs = executeQuery(sql); if (rs.next()) { return true; } } catch (SQLException e) { e.printStackTrace(); } return false; } /** * 数据库查询 * * @param userName * @param passWord */ public ResultSet executeQuery(String sql) { try { rs = stat.executeQuery(sql); } catch (Exception e) { rs = null; } return rs; } public boolean userRegist(String userName, String passWord) { String sql = "insert into tb_user(username,password) values('"+userName+"','"+passWord+"')"; try { stat.executeUpdate(sql); return true; } catch (Exception e) { e.printStackTrace(); } return false; } }
大致能跑的,就是跑数据库的时候有点问题,没那么多时间去研究了~
其实一直困扰的我的问题就是一个form里面有多个submit按钮时要怎么跳转到同一个action里面的不同的方法。
网上这种例子有很多,但大多数都实现不了。后来不经意看到一个论坛上一个帖子的一个神回复。于是试了一下果然成功了。
主要就是在struts.xml中加一句话,在上述代码中已经写出来了
就是这句话。
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
value必须是true,否则就不能动态的分配了。
就总结到这里了。希望大家相互指正,相互学习~