现在在做一个项目,配置环境:tomcat6.0.35 + JDK1.6.0_30 + struts2.3.1.2 + mysql5.0
但是form提交的时候,报404错误.
进入index.jsp提交后,报错“HTTP Status 404 - /huazhaosoft/manager.do”
type Status reportmessage /huazhaosoft/manager.dodescription The requested resource (/huazhaosoft/manager.do) is not available.index.jsp
<form name="form1" method="post" action="manager.do?action=login">web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SSH</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!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.action.extension" value="do" />
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="package" extends="struts-default" namespace="/huazhaosoft">
<action name="managerForm" path="/manager" scope="request" type="com.action.Manager" validate="true">
<forward name="managerLoginok" path="/welcome.jsp" />
<forward name="error" path="/welcome.jsp" />
</action>
</package>
</struts>
manager.java
package com.action;import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.actionForm.ManagerForm;
import com.dao.ManagerDAO;
import javax.servlet.http.HttpSession;public class Manager extends Action {
private ManagerDAO managerDAO = null; public Manager() {
this.managerDAO = new ManagerDAO();
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String action = request.getParameter("action");
System.out.println("获取的查询字符串:" + action);
if (action == null || "".equals(action)) {
return mapping.findForward("error");
} else if ("login".equals(action)) {
return managerLogin(mapping, form, request, response);
} else if ("managerAdd".equals(action)) {
return managerAdd(mapping, form, request, response);
} else if ("managerQuery".equals(action)) {
return managerQuery(mapping, form, request, response);
} else if ("managerModifyQuery".equals(action)) {
return managerModifyQuery(mapping, form, request, response);
} else if ("managerModify".equals(action)) {
return managerModify(mapping, form, request, response);
} else if ("managerDel".equals(action)) {
return managerDel(mapping, form, request, response);
} else if ("querypwd".equals(action)) {
return pwdQuery(mapping, form, request, response);
} else if ("modifypwd".equals(action)) {
return modifypwd(mapping, form, request, response);
}
request.setAttribute("error", "操作失败!");
return mapping.findForward("error");
} // 用户身份验证 public ActionForward managerLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ManagerForm managerForm = (ManagerForm) form;
managerForm.setName(managerForm.getName());
managerForm.setPwd(managerForm.getPwd());
int ret = managerDAO.checkManager(managerForm);
System.out.print("验证结果ret的值:" + ret);
if (ret == 1) {
HttpSession session = request.getSession();
session.setAttribute("manager", managerForm.getName());
return mapping.findForward("managerLoginok");
} else {
request.setAttribute("error", "您输入的用户名称或密码错误!");
return mapping.findForward("error");
}
}}
managerForm.javapackage com.actionForm;import org.apache.struts.action.ActionForm;public class ManagerForm extends ActionForm {
private Integer id=new Integer(-1); //用户ID号
private String name=""; //用户名称
private String pwd=""; //用户密码
private int sysset=0; //系统设置权限
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public String getPwd() {
return pwd;
} public void setSysset(int sysset){
this.sysset=sysset;
}
public int getSysset(){
return sysset;
}
}ConnDB.javapackage com.core;import java.io.InputStream;
import java.sql.*;
import java.util.Properties;public class ConnDB {
public Connection conn = null;
public Statement stmt = null;
public ResultSet rs = null;
private static String propFileName = "/com/connDB.properties"; //指定资源文件保存的位置
private static Properties prop = new Properties();
private static String dbClassName ="com.mysql.jdbc.Driver";
private static String dbUrl = "";
public ConnDB(){
try {
InputStream in=getClass().getResourceAsStream(propFileName);
prop.load(in); //通过输入流对象加载Properties文件
dbClassName = prop.getProperty("DB_CLASS_NAME"); //获取数据库驱动
dbUrl = prop.getProperty("DB_URL",
"jdbc:mysql://127.0.0.1:3306/db_company?user=root&password=root&useUnicode=true");
}
catch (Exception e) {
e.printStackTrace(); //输出异常信息
}
} public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl);
}
catch (Exception ee) {
ee.printStackTrace();
}
if (conn == null) {
System.err.println(
"警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" +
dbClassName + "\r\n链接位置:" + dbUrl);
}
return conn;
} /*
* 功能:执行查询语句
*/
public ResultSet executeQuery(String sql) {
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
} /*
* 功能:执行更新操作
*/
public int executeUpdate(String sql) {
int result = 0;
try {
conn = getConnection(); //调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql); //执行更新操作
} catch (SQLException ex) {
result = 0;
}
return result;
} /*
* 功能:关闭数据库的连接
*/
public void close() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}managerDAO.javapackage com.dao;import com.core.*;
import java.util.*;
import com.actionForm.ManagerForm;
import java.sql.*;
import java.*;public class ManagerDAO {
private ConnDB conn = new ConnDB();
//查询数据
public Collection query(String queryif) {
ManagerForm managerForm = null;
Collection managercoll = new ArrayList();
String sql = "";
if (queryif == null || queryif == "" || queryif == "all") { //当参数queryif的值为null、all或空时查询全部数据
sql = "select m.*,p.purview from tb_member m left join tb_purview p on m.id=p.id";
}else{
sql="select m.*,p.purview from tb_member m left join tb_purview p on m.id=p.id where m.name='"+queryif+"'"; //此处需要应用左连接
}
ResultSet rs = conn.executeQuery(sql); //执行SQL语句
try { //捕捉异常信息
while (rs.next()) {
managerForm = new ManagerForm();
managerForm.setId(Integer.valueOf(rs.getString(1)));
managerForm.setName(rs.getString(2));
managerForm.setPwd(rs.getString(3));
managerForm.setSysset(rs.getInt(4));
managercoll.add(managerForm); //将查询结果保存到Collection集合中
}
} catch (SQLException e) {}
return managercoll; //返回查询结果
} //管理员身份验证
public int checkManager(ManagerForm managerForm) {
int flag = 0;
//ChStr chStr=new ChStr();
String sql = "SELECT * FROM tb_member where name='" +
managerForm.getName() + "'";
ResultSet rs = conn.executeQuery(sql);
try {
if (rs.next()) {
String pwd = managerForm.getPwd(); //获取输入的密码并过滤输入字符串中的危险字符
if (pwd.equals(rs.getString(3))) {
flag = 1;
} else {
flag = 0;
}
}else{
flag = 0;
}
} catch (SQLException ex) {
flag = 0;
}finally{
conn.close();
}
return flag;
} }
但是form提交的时候,报404错误.
进入index.jsp提交后,报错“HTTP Status 404 - /huazhaosoft/manager.do”
type Status reportmessage /huazhaosoft/manager.dodescription The requested resource (/huazhaosoft/manager.do) is not available.index.jsp
<form name="form1" method="post" action="manager.do?action=login">web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SSH</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!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.action.extension" value="do" />
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="package" extends="struts-default" namespace="/huazhaosoft">
<action name="managerForm" path="/manager" scope="request" type="com.action.Manager" validate="true">
<forward name="managerLoginok" path="/welcome.jsp" />
<forward name="error" path="/welcome.jsp" />
</action>
</package>
</struts>
manager.java
package com.action;import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.actionForm.ManagerForm;
import com.dao.ManagerDAO;
import javax.servlet.http.HttpSession;public class Manager extends Action {
private ManagerDAO managerDAO = null; public Manager() {
this.managerDAO = new ManagerDAO();
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String action = request.getParameter("action");
System.out.println("获取的查询字符串:" + action);
if (action == null || "".equals(action)) {
return mapping.findForward("error");
} else if ("login".equals(action)) {
return managerLogin(mapping, form, request, response);
} else if ("managerAdd".equals(action)) {
return managerAdd(mapping, form, request, response);
} else if ("managerQuery".equals(action)) {
return managerQuery(mapping, form, request, response);
} else if ("managerModifyQuery".equals(action)) {
return managerModifyQuery(mapping, form, request, response);
} else if ("managerModify".equals(action)) {
return managerModify(mapping, form, request, response);
} else if ("managerDel".equals(action)) {
return managerDel(mapping, form, request, response);
} else if ("querypwd".equals(action)) {
return pwdQuery(mapping, form, request, response);
} else if ("modifypwd".equals(action)) {
return modifypwd(mapping, form, request, response);
}
request.setAttribute("error", "操作失败!");
return mapping.findForward("error");
} // 用户身份验证 public ActionForward managerLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ManagerForm managerForm = (ManagerForm) form;
managerForm.setName(managerForm.getName());
managerForm.setPwd(managerForm.getPwd());
int ret = managerDAO.checkManager(managerForm);
System.out.print("验证结果ret的值:" + ret);
if (ret == 1) {
HttpSession session = request.getSession();
session.setAttribute("manager", managerForm.getName());
return mapping.findForward("managerLoginok");
} else {
request.setAttribute("error", "您输入的用户名称或密码错误!");
return mapping.findForward("error");
}
}}
managerForm.javapackage com.actionForm;import org.apache.struts.action.ActionForm;public class ManagerForm extends ActionForm {
private Integer id=new Integer(-1); //用户ID号
private String name=""; //用户名称
private String pwd=""; //用户密码
private int sysset=0; //系统设置权限
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public String getPwd() {
return pwd;
} public void setSysset(int sysset){
this.sysset=sysset;
}
public int getSysset(){
return sysset;
}
}ConnDB.javapackage com.core;import java.io.InputStream;
import java.sql.*;
import java.util.Properties;public class ConnDB {
public Connection conn = null;
public Statement stmt = null;
public ResultSet rs = null;
private static String propFileName = "/com/connDB.properties"; //指定资源文件保存的位置
private static Properties prop = new Properties();
private static String dbClassName ="com.mysql.jdbc.Driver";
private static String dbUrl = "";
public ConnDB(){
try {
InputStream in=getClass().getResourceAsStream(propFileName);
prop.load(in); //通过输入流对象加载Properties文件
dbClassName = prop.getProperty("DB_CLASS_NAME"); //获取数据库驱动
dbUrl = prop.getProperty("DB_URL",
"jdbc:mysql://127.0.0.1:3306/db_company?user=root&password=root&useUnicode=true");
}
catch (Exception e) {
e.printStackTrace(); //输出异常信息
}
} public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl);
}
catch (Exception ee) {
ee.printStackTrace();
}
if (conn == null) {
System.err.println(
"警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" +
dbClassName + "\r\n链接位置:" + dbUrl);
}
return conn;
} /*
* 功能:执行查询语句
*/
public ResultSet executeQuery(String sql) {
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
} /*
* 功能:执行更新操作
*/
public int executeUpdate(String sql) {
int result = 0;
try {
conn = getConnection(); //调用getConnection()方法构造Connection对象的一个实例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql); //执行更新操作
} catch (SQLException ex) {
result = 0;
}
return result;
} /*
* 功能:关闭数据库的连接
*/
public void close() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}managerDAO.javapackage com.dao;import com.core.*;
import java.util.*;
import com.actionForm.ManagerForm;
import java.sql.*;
import java.*;public class ManagerDAO {
private ConnDB conn = new ConnDB();
//查询数据
public Collection query(String queryif) {
ManagerForm managerForm = null;
Collection managercoll = new ArrayList();
String sql = "";
if (queryif == null || queryif == "" || queryif == "all") { //当参数queryif的值为null、all或空时查询全部数据
sql = "select m.*,p.purview from tb_member m left join tb_purview p on m.id=p.id";
}else{
sql="select m.*,p.purview from tb_member m left join tb_purview p on m.id=p.id where m.name='"+queryif+"'"; //此处需要应用左连接
}
ResultSet rs = conn.executeQuery(sql); //执行SQL语句
try { //捕捉异常信息
while (rs.next()) {
managerForm = new ManagerForm();
managerForm.setId(Integer.valueOf(rs.getString(1)));
managerForm.setName(rs.getString(2));
managerForm.setPwd(rs.getString(3));
managerForm.setSysset(rs.getInt(4));
managercoll.add(managerForm); //将查询结果保存到Collection集合中
}
} catch (SQLException e) {}
return managercoll; //返回查询结果
} //管理员身份验证
public int checkManager(ManagerForm managerForm) {
int flag = 0;
//ChStr chStr=new ChStr();
String sql = "SELECT * FROM tb_member where name='" +
managerForm.getName() + "'";
ResultSet rs = conn.executeQuery(sql);
try {
if (rs.next()) {
String pwd = managerForm.getPwd(); //获取输入的密码并过滤输入字符串中的危险字符
if (pwd.equals(rs.getString(3))) {
flag = 1;
} else {
flag = 0;
}
}else{
flag = 0;
}
} catch (SQLException ex) {
flag = 0;
}finally{
conn.close();
}
return flag;
} }
这两个其中一个配置不对找不到,所以报404,大致看了一下,你可以把jsp的路径写全一些试试
你的namespace是在/huazhaosoft下找这个action的。而你的页面请求的action是
<form name="form1" method="post" action="manager.do?action=login">
按照你struts.xml配置的话 前台的jsp页面的action应该改为<form name="form1" method="post" action="/huazhaosoft/managerForm.action">
看了看你struts配置 把我写的action变成你的do 试试。
很明显没有这个action(/huazhaosoft/manager.do)改成<form name="form1" method="post" action="managerForm.do?action=login">
在Struts.xml中需要说明
<action name="manager" class="xxx">
...
</action>
请求地址更改为:huazhaosoft/manager.do就行了